详细介绍idea开发工具及使用技巧

1. 2023版安装1.1删除老版本1.2 下载及安装1.3 新建演示工程

2.常见配置2.1窗体外观和UI设置2.1.1Appearance 外观2.1.2 New UI 2023新外观

2.2内容区的字体和大小2.3编码设置UTF-82.4编辑标识*设置2.5方法参数补全2.6 本地maven配置2.7 新建项目配置复用2.8文件生成模板2.8.1 修改模板2.8.2 新增模板

2.9 自动导包2.10 导出导入配置

3. 使用技巧3.1 查看类图3.2关闭升级3.3 常用快捷键3.3.1 显示类属性和方法 ALT+73.3.2 代码注释ctrl + /3.3.3 查看源码CTRL+dbclick3.3.4 查找CTRL+F3.3.5 查看类的继承关系 CTRL+H3.3.6 查找类或者文件 CTRL+N3.3.7 代码格式化Ctrl + Alt + L3.3.8 打开最近关闭的文件Ctrl + E3.3.9 参数提示 Ctrl + P3.3.10 展开关闭左边菜单 Alt+13.3.11 查找类被哪些调用过 Alt+F73.3.12 万能快捷键 Alt+Enter

3.4后缀补全 Postfix Completion3.5缩写模板-Live Templates3.5.1 已有缩写3.5.2 自定义缩写模板3.5.2 缩写模板live template和后缀补全的区别

3.6 取消单行显示 tabs 的操作

4. idea工程项目4.1 项目Project 和modul的理解4.2 Project Structure理解4.2.1 左边面板结构4.2.2 项目信息4.2.2Modules信息4.2.3 lib信息Libraries4.2.4 Facets4.2.5 打包方式artifacts

4.3创建空项目4.4创建新工程4.4.1 maven工程4.4.2 web工程4.4.2 springboot工程

5.插件5.1 lombok插件5.2 翻译插件-Translation5.3正则表达式-any-rule插件5.4 序列化ID插件-erialVersionUID5.5 类时序图插件-sequenceDiagram5.6 数据库插件5.7 mybatis插件 -Free MyBatis Tool5.8接口查询-RestfulTool5.9 json自动转vo类-GsonFormat

6.idea调试6.1启动调试模式6.2基础调试介绍6.3高级调试技巧6.3.1方法断点6.3.2 字段断点6.3.3 debug调试条件设置6.3.4 Stream 调试(Trace Current Stream Chain)6.3.5 表达式设置

6.4 远程调试6.4.1配置远程调试6.4.2启动服务

1. 2023版安装

1.1删除老版本

如果以前装有idea需要先删除,以避免冲突,在idea安装目录/bin/Uninstall.exe双击

1.2 下载及安装

最新版本 https://www.jetbrains.com/idea/download/?section=windows 历史版本 https://www.jetbrains.com/idea/download/other.html

注意:一定要下载旗舰版 卸载老版本 IDEA 完成后,双击刚刚下载好的 IDEA 2023.3 版本安装包。弹框会提示选择安装路径, , 然后点击 Next 按钮:

IDEA 运行成功后,会弹出如下对号框,强制用户需要先登录 JetBrains 账户才能使用,点击退出

1.3 新建演示工程

未来配置相关的信息,我们必须新建一个工程进入,选择一个最基础的java工程,如图

2.常见配置

我们创建一个工程后,就可以File->Setting配置Idea的常见属性

2.1窗体外观和UI设置

2.1.1Appearance 外观

这里外观指的是idea窗口和按钮相关,不涉及到到编辑内容区

2.1.2 New UI 2023新外观

2023新增一个UI模式,默认选中,取消重启后回到经典模式

2.2内容区的字体和大小

在Appearance里调整的窗体的字体大小等,内容编辑区的字体和大小需要在Font里配置,

File | Settings | Editor | Font

编辑区的字体动态大小 我们可以设置动态调整编辑区字体大小

File | Settings | Editor | General 勾选后,我们在内容区,可以按住Ctrl+鼠标滚轮进行动态的放大和缩小

2.3编码设置UTF-8

我们一般采用utf-8编码

File | Settings | Editor | File Encodings

2.4编辑标识*设置

idea2023内容区编辑后,系统是自动保存的,默认没有任何提示,可能有些用户不习惯,可以设置,正操作未保存的内容区有个圆点,表示正在编辑

File | Settings | Editor | General | Editor Tabs

2.5方法参数补全

默认情况下,idea是不启用参数补全的(节约性能),这个在我们调用是不是很智能。

File | Settings | Editor | General | Code Completion

效果 还有水印提示,这样就很智能了

2.6 本地maven配置

File | Settings | Build, Execution, Deployment | Build Tools | Maven

2.7 新建项目配置复用

1.idea主题、字体这些,一次配置后,以后新增项目都有效 2.编码、maven、工具这些,新建项目时依然要配置

1.utf-8编码:File | Settings | Editor | File Encodings

2.自动编译:File | Settings | Build, Execution, Deployment | Compiler

3.自动导包:File | Settings | Other Settings | Auto Import

4.git配置:File | Settings | Version Control | Git

5.maven配置:File | Settings | Build, Execution, Deployment | Build Tools | Maven

setting:当前项目配置 new projects Setup|Setting for new Project :新建项目配置,和setting配置一样

进入后,可把maven和utf-8配置了

2.8文件生成模板

我们创建各种文件,都有对应模板,可以修改,最常见的是类的注释

File | Settings | Editor | File and Code Templates

2.8.1 修改模板

比如我们给类加上注释 输入:

/**

*@class: ${PACKAGE_NAME}.${NAME}

*@description: ${description}

*@author: jiangzengkui

*@company: 教育家

*@create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}

*/

生成类的注释

/**

* @class: com.jsoft.example.X

* @description:

* @author: jiangzengkui

* @company: 教育家

* @create: 2023-12-15 12:32

*/

2.8.2 新增模板

我们新增一个mybatis的后缀模板

我们点击新增文件,模板名称就出现了

2.9 自动导包

我们在粘贴复制代码时,所使用导的其他地方的类,可以自动导入

File | Settings | Editor | General | Auto Import

都勾选上

Add unambiguous imports on the fly:自动导入不明确的结构 Optimize imports on the fly:自动帮我们优化导入的包

2.10 导出导入配置

我们配置好的内容,可以保存下来,到其他地方使用,也可以导入,导出的是一个压缩包settings.zip

3. 使用技巧

idea是一款高智能化的开发工具,很多技巧能提升开发效率

3.1 查看类图

把光标放置对应类上,右键,选择Diagrams-Show Diagram

可以查看这个类及互相依赖的类的UML类图

3.2关闭升级

如果比较习惯这个版本,可以关闭版本升级提示

3.3 常用快捷键

idea里面非常多的快捷键,详细的可参考相关指南,个人觉得重要的列举入下

3.3.1 显示类属性和方法 ALT+7

场景:一个类的方法太多,想看到所有方法和属性,利于我们更快了解类的方法和属性

3.3.2 代码注释ctrl + /

选中要注释的代码,执行以下操作 单行注释 ctrl + / 多行注释 ctrl + shift + /

// System.out.println("ffff");

// System.out.println("ffff");

/*System.out.println("aa");

System.out.println("aa");*/

}

3.3.3 查看源码CTRL+dbclick

我们要看一个类的源码,有两种情况:

1.代码里已经有类,则按住ctrl+点击这个类 2.我们知道类名或者部分类名,trl + shift + t 这个可以用于查找jdk的源码和自己写的文件

3.3.4 查找CTRL+F

在工具条:Edit->find Ctrl+F是在本页查找,Ctrl+Shift+F是全局查找

3.3.5 查看类的继承关系 CTRL+H

在具体类里,或者光标放到到一个类名上

3.3.6 查找类或者文件 CTRL+N

已知道某个类或者文件的名称(部分名称),查找这个类或者文件

3.3.7 代码格式化Ctrl + Alt + L

或者菜单:code|Refmact code 打开最近关闭的文件

3.3.8 打开最近关闭的文件Ctrl + E

我们操作了很多文件又关闭了,从包里找太麻烦,就把最近打开的文件调出来

3.3.9 参数提示 Ctrl + P

忘记方法的参数了,直接Ctrl+p

3.3.10 展开关闭左边菜单 Alt+1

为突出编辑区,可alt+1折叠左边菜单

3.3.11 查找类被哪些调用过 Alt+F7

在类里直接alt+f7,或把光标放置到类名上alt+f7,可以查询出这个类被哪些类调用过

3.3.12 万能快捷键 Alt+Enter

Alt+Enter属于万能快捷键,在很多场景都有应用,在不知道怎么办时,不妨试试整个快捷键组合

1.接口实现类

把光标放置在接口名上,Alt+Enter,可快速生成实现类

2…接口跳转到实现类

把光标放置在接口名上,Alt+Enter

捕捉异常

4.自动导包

3.4后缀补全 Postfix Completion

我们在一个变量直接输入一下后缀,便可以生成相关代码 配置项: File | Settings | Editor | General | Postfix Completion

.var声明一个变量. sout打印一个变量.fori正循环一个数组,带索引.forr倒循环一个数组,,带索引.forfor(String s:sz),不用索引的循环,可用于数组\list.iter和.for效果一样.null生成if(xx==null) {}.nn生成if(xx!=null) {}.ifx>10.if 生成if(x>10){}

写一个代码,声明基本变量,对象,数组、list变量,尝试一下即知道效果了

3.5缩写模板-Live Templates

缩写快捷方式能提升编码效率,可以用已有的,也可自定义 模板可以在两个地方定义 1.Editor – Live Templates 和

3.5.1 已有缩写

缩写生成代码soutSystem.out.println();mainpublic static void main(String[] args) {};iterfor (Integer i : list) {}; 和后缀补全效果一样x.iter,容易混淆ifnif (list == null) {}; 和后缀补全效果一样x.null,容易混淆innif (list != null) {}; 和后缀补全效果一样x.nn,容易混淆

配置:File | Settings | Editor | Live Templates

3.5.2 自定义缩写模板

可以自定义缩写模板,把我们日常用到比较多的粘贴复制等做成缩写

1.可以先新增一个分组,存放自己写的方法 2.选中一个分组,点击新增一个模板

3.填写模板内容

注意:$变量名$,如果没有表达式,就是光标所在地,点击回车到第二个变量

我们下面写几个自定义模板

(1)map遍历

Abbreviation:maplist

Description:生成map的遍历

Template tex:

for(String key : $VAR1$.keySet()){

$VAR2$ value = map.get(key); //map值

$EDN$

}

(2)定义字符串变量

Abbreviation:vars

Description:声明字符串变量

Template tex:

private String $VAR1$; //$VAR2$

$END$

(3)测试方法

Abbreviation:test

Description:test测试方法

Template tex:

@Test

public void test$VAR1$(){

$END$

}

(3)优化方法注释

Abbreviation:*

Description:优化函数注释

Template tex:注意不是/**,这样读不出表达式数据出来

**

* @Description: $description$

* @Create:$Date$ $Time$

* @Param: $param$

* @Return: $return$

*/

注意:这里必须用*,Expand with:enter 其变量表达式如下:

3.5.2 缩写模板live template和后缀补全的区别

很多效果是一样吗,如null 迭代,但写法不一样, 缩写就是输入说些,后缀补全是在对象后面加.+后缀

3.6 取消单行显示 tabs 的操作

默认打开文件过多,只显示一行,其他省略 可以设置为多行,不隐藏 效果如图:

4. idea工程项目

4.1 项目Project 和modul的理解

在 Eclipse 中我们有 Workspace(工作空间)和 Project(工程)的概念,在 IDEA 中只有 Project(工程)和 Module(模块)的概念。这里的对应关系为:

Eclipse 中 workspace 相当于 IDEA 中的 Project Eclipse 中 Project 相当于 IDEA 中的 Module

2.在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project 可以有多个 Module。目前主流的大型项目都是分布式部署的,结构都是类似这种多 Module 结构

这类项目一般是这样划分的,比如:core Module、web Module、plugin Module、solr Module 等等,模块之间彼此可以相互依赖。通过这些 Module 的命名也可以看出,他们之间都是处于同一个项目业务下的模块,彼此之间是有不可分割的业务关系的

3.相比较于多 Module 项目,小项目就无需搞得这么复杂。只有一个 Module 的结构 IntelliJ IDEA 也是支持的,并且 IntelliJ IDEA 创建项目的时候,默认就是单Module 的结构的

DEA有两个概念,一个是Project(工程),一个是Module(模块)。 其中,一个模块相当于MyEclipse中的一个项目,也就是一个包。而一个工程就是由多个包组成的整体。在IDEA中,并没有对Project和Module进行强关联和强约束。主要起到一个项目定义、范围约束、规范类型的效果。

比如,我接了一个供方系统的工程,这个工程有一个前端的项目包,一个后端的项目包,也就是两个模块。那么我就会建一个文件夹叫做supplier(供方系统),然后把前后端的两个项目包都放在这个文件夹中。项目包就叫模块,整个文件夹就表示一个工程。

通过上面的介绍,我们知道:在 IntelliJ IDEA 中Project是最顶级的结构单元,然后就是Module,一个Project可以有多个Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分的,比如:user-core-module、user-facade-module和user-hessian-module等等,模块之间彼此可以相互依赖。通过这些Module的命名可以看出,它们都是处于同一个项目中的模块,彼此之间是有着不可分割的业务关系的。

因此,我们可以大致总结出:一个Project是由一个或多个Module组成,尽量让各模块处于同一项目之中,此时彼此之间具有互相依赖的关联关系。在这里,之所以说“尽量”,是因为 IntelliJ IDEA 的Project是一个没有具备任何编码设置、构建等开发功能的,主要起到一个项目定义、范围约束、规范类型的效果,或许,我们也可以简单地理解Project就是一个单纯的目录,只是这个目录在命名上必须有其代表性的意义。在一般情况下,IntelliJ IDEA 是默认单Project单Module的,这时Project和Module合二为一,在没有修改存储路径的时候,显然Project对Module具有强约束作用啦!不过说实话,这里就是将Module的内容放在了Project的目录下,实际上还是Module自己约束自己。

4.2 Project Structure理解

File|Project Structure是项目工程的框架结构

4.2.1 左边面板结构

4.2.2 项目信息

4.2.2Modules信息

4.2.3 lib信息Libraries

4.2.4 Facets

发布的web项目的web.xml

4.2.5 打包方式artifacts

4.3创建空项目

空项目没有任何东西,可以理解成一个文件夹

4.4创建新工程

4.4.1 maven工程

我们选择创建maven工程 这里重点是Build system:Itellij就是不带构建工具的普通java工程 生成maven工程后,可以按照maven的框架来构建代码,具体maven知识请参考mave知识讲解

4.4.2 web工程

虽然 目前都采用前后端分离技术,但老的项目依然在用 选择je22和servlet 工程结构

查看pom.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.jsoft

idea_web

1.0-SNAPSHOT

idea_web

war

UTF-8

1.8

1.8

5.9.2

javax.servlet

javax.servlet-api

4.0.1

provided

org.junit.jupiter

junit-jupiter-api

${junit.version}

test

org.junit.jupiter

junit-jupiter-engine

${junit.version}

test

org.apache.maven.plugins

maven-war-plugin

3.3.2

配置tomcat 配置tomcat路径和端口 部署

4.4.2 springboot工程

选择springboot版本及依赖功能 springboot工程结构

运营启动类,项目启动成功即可

5.插件

插件通过 File | Settings | Plugins来管理的,优秀的插件能提升开发效率,下面介绍几个常用的插件

5.1 lombok插件

lombok是一个简写vo的get set 构造函数的第三方库,idea2023已经默认下载安装了lombok插件,spring也集成了lombok pom

org.projectlombok

lombok

1.18.30

lombok注解

注册语法说明@NonNullnull检查,如果是null,抛出异常,表述在变量前@Data自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor,标注在类名上@NoArgsConstructor生成无参构造函数,标注在类名上@AllArgsConstructor生成全参构造函数,标注在类名上@Getter @Setter生成get set,标注在属性上,eg:@Getter @Setter private int age;

@Data

@NoArgsConstructor

@AllArgsConstructor

public class User {

private String id;

private String name;

public void test(@NonNull User user){

}

}

5.2 翻译插件-Translation

市场输入Translation 翻译:

选中内容,右键选中Translation

5.3正则表达式-any-rule插件

插件市场输入any-rule 在内容区右键 默认从开头对比到结尾,删除红框中的内容,/^表示开头,$/表示结尾。 将单斜杠改为双斜杠

//默认从开头对比到结尾,删除红框中的内容,/^表示开头,$/表示结尾。

String regExp="/^\d{15,17}$/";

//将单斜杠改为双斜杠

regExp="\\d{15,17}";

5.4 序列化ID插件-erialVersionUID

市场输入generateSerial 创建一个类,实现Serializable接口 右键,选择Generate,选择SerialVersionUID,则生成id

public class Person implements Serializable {

private static final long serialVersionUID = -5037059499277861230L;

}

5.5 类时序图插件-sequenceDiagram

生成类的时序图 光标置于方法上,右键

5.6 数据库插件

idea2023已经已经集成了数据库插件 配置数据库连接和下载驱动程序 就可以对表进行查询及操作了

5.7 mybatis插件 -Free MyBatis Tool

市场输入Free MyBatis Tool

生成mapper xml文件 快速从代码跳转到mapper及从mapper返回代码 mybatis自动补全及语法错误提示 集成mybatis generator gui界面 根据数据库注解,生成swagger model注

可以点击绿色小箭头,在mapper.java和xml对应切换,非常方便

5.8接口查询-RestfulTool

前端的请求路径,不用一个个的controller里找了,直接 Ctrl + Alt + /就可以帮助我们精确定位!

提供了一个 Services tree 的显示窗口 双击 URL 直接跳转到对应的方法定义 一个简单的 http 请求工具 支持 Spring 体系 (Spring MVC / Spring Boot) 支持 JAX-RS 支持 Navigate -> Request Service 搜索 Mapping (Ctrl + Alt + /)

5.9 json自动转vo类-GsonFormat

Web 应用中大量使用 RESTful API,而 API 中又大量使用 JSON 数据格式。每次将 JSON 格式的数据对应编写为实体类,并依次定义属性,是一个非常痛苦的事情。

类里右键,选择Generate

把json粘贴进入

6.idea调试

修改程序问题是程序员的日常工作,有程序员喜欢用打印数据的模式跟踪,这种模式是非常低效的,擅长IDEA的调试模式,能更容易跟踪并发现问题。

6.1启动调试模式

单独java类测试,右键选择调试模式 tomcat调试,选择爬虫图标

6.2基础调试介绍

测试代码

package com.example.newweb;

import java.util.ArrayList;

import java.util.List;

/**

* @class: com.example.newweb.Person

* @description:

* @author: jiangzengkui

* @company: 教育家

* @create: 2023-12-20 18:11

*/

public class Person {

public static void main(String[] args) {

System.out.println("main");

Person person = new Person();

person.t();

}

public void t(){

System.out.println("t-1111");

String s1="1";

List list=new ArrayList<>();

list.add("t-1");

list.add("t-2");

dd();

String s2="t-2";

System.out.println("t-2222");

}

public void dd(){

List list=new ArrayList<>();

list.add("dd-1");

list.add("dd-2");

System.out.println("dd3");

}

}

1.在左侧要调试暂停的地方点击一下,标注最常用的行断点,如图

2.启动调试模式

点击debug,启动

3.调试面板介绍

点击启动调式后,代码将跳转到打了断点的行上,并展示调试面板 (1)调试按钮 最重要的三个调试按钮

step over 点击此按钮,或者F8,就是一行一行往下执行,右边变量展示区展示每步骤变量的变化

step into 这按钮是进入子方法的意思,一般应用场景是,方法里子方法,如果我们不想跟踪这个子方法的内部执行,则点击Step over,如果要进入这个子方法,则点击此按钮,进入此子程序,比如jdk自带的方法,我们就不执行,我们自己写的程序就step into

step out 跳出子方法

其他方法

resume program 恢复程序运行,但如果该断点下面还有断点,则停在下一个断点上。

stop 停止所有断点调试,执行程序。

return返回到第一个断点

view breakpoints查看所有断点

mute breakpoints所有断点失效

变量跟踪区 调试内容的展示区,可跟踪变量的变化情况 在代码编辑区也有提示水印

6.3高级调试技巧

6.3.1方法断点

功能:在方法入口(entry)和出口(exit)都会自动暂停。在方法入口暂停可以让我们从头调试整个方法,而在方法出口处暂停可以让我们看到方法执行完毕时,方法内各个变量的数据情况。

一个比较好的应用场景 有时候我们的一个接口会存在很多实现类,我们短时间内难以分析究竟是运行到了哪个实现类中,这个时候就可以使用方法断点,我们将断点打在接口方法上,运行到该方法时,会自动跳到实际执行的实现类,无需通过上下文环境去分析是哪个实现类。 例如:

public interface Animal {

void t();

}

public class Person implements Animal{

public static void main(String[] args) {

System.out.println("main");

Person person = new Person();

person.t();

}

public void t(){

System.out.println("t-1111");

String s1="1";

List list=new ArrayList<>();

list.add("t-1");

list.add("t-2");

}

}

6.3.2 字段断点

在字段左侧点击,增加字段断点,默认修改这个字段的值时,形成断点暂停,便于我们观察 断点上点击右键即弹出下图可匹配

6.3.3 debug调试条件设置

比如在循环遍历中,我们不需要那么多循环遍历,可以修改遍历的条件,只把预期想执行的循环来调试,则可以设置条件 例如:

这里我们要调试循环,这么多循环是我们不需要的,我们只想观察count=9时候的调试,则在调试图标上右键,输入count==9即可,如果是大于则设置count>9 如果是字符串,则用字符串变量.equasl(预期值) 如:

6.3.4 Stream 调试(Trace Current Stream Chain)

我们跟踪Stream时,可以设置 功能:当我们暂停在 Stream 的处理代码行时,可以将 Stream 的整个处理流程以图形化界面的形式展示。

6.3.5 表达式设置

我们可以修改一些值,改变程序的运行逻辑,比如: 我们正常程序可能很难获得id小于0的数据,就无法测试分支else,那我们可以手动改变他 。启动调试(必须启动),在调试栏点击…,弹出 把变量id=0,在真实情况下可以修改任何对象、变量的值 再比如: 我们可以修改对象的值 修改后的效果,测试对象的值就改变了:

6.4 远程调试

功能:调试部署在远程服务器上的代码。 远程调试最常见的使用场景是排查线上问题,下面举个例子。 有一个用户(userId=8888)请求某个接口会出现异常,但是其他用户是正常的,包括我们的各种测试账号 此时我们可以使用测试账号(userId=1222),在预发布环境向该接口发起请求,并且我们会通过远程 Debug 在接口入口处拦截住该请求,然后我们通过执行表达式功能,将userId从1222修改为8888,则接下来我们就可以模拟出现问题的用户来调试整个接口了,从而帮助我们快速定位到问题。

注意:使用远程Debug的环境必须不能对外网访问,否则可能存在安全隐患。

6.4.1配置远程调试

6.4.2启动服务

以springboot为例子,启动服务,把配置的参数带上 如:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar java-study-demo-0.0.1-SNAPSHOT.jar

启动后效果:

就可以利用本地代码做远程调试了

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: