当前位置:   article > 正文

IntelliJ IDEA2023学习教程

idea2023

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

1. 2023版安装

1.1删除老版本

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

在这里插入图片描述

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}
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

生成类的注释

/**
 * @class: com.jsoft.example.X
 * @description:
 * @author: jiangzengkui
 * @company: 教育家
 * @create: 2023-12-15 12:32
 */
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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");*/

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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
在这里插入图片描述

  1. 捕捉异常

在这里插入图片描述

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

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

(1)map遍历

Abbreviation:maplist
Description:生成map的遍历
Template tex:

 for(String key : $VAR1$.keySet()){
            $VAR2$ value = map.get(key); //map值
            $EDN$
          
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

(2)定义字符串变量

Abbreviation:vars
Description:声明字符串变量
Template tex:
private String $VAR1$; //$VAR2$
$END$
  • 1
  • 2
  • 3
  • 4
  • 5

(3)测试方法

Abbreviation:test
Description:test测试方法
Template tex:
@Test
public void test$VAR1$(){
   $END$
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(3)优化方法注释

Abbreviation*
Description:优化函数注释
Template tex:注意不是/**,这样读不出表达式数据出来

**
 * @Description: $description$
 * @Create:$Date$ $Time$
 * @Param: $param$
 * @Return: $return$
 */
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

注意:这里必须用*,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

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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.jsoft</groupId>
    <artifactId>idea_web</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>idea_web</name>
    <packaging>war</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <junit.version>5.9.2</junit.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.2</version>
            </plugin>
        </plugins>
    </build>
</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

配置tomcat
在这里插入图片描述
在这里插入图片描述
配置tomcat路径和端口
在这里插入图片描述
部署
在这里插入图片描述

4.4.2 springboot工程

在这里插入图片描述

选择springboot版本及依赖功能
在这里插入图片描述
springboot工程结构

在这里插入图片描述
运营启动类,项目启动成功即可
在这里插入图片描述

5.插件

插件通过 File | Settings | Plugins来管理的,优秀的插件能提升开发效率,下面介绍几个常用的插件在这里插入图片描述

5.1 lombok插件

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

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
 </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

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){

	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5.2 翻译插件-Translation

市场输入Translation
在这里插入图片描述
翻译:

选中内容,右键选中Translation

在这里插入图片描述

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

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

     //默认从开头对比到结尾,删除红框中的内容,/^表示开头,$/表示结尾。
     String regExp="/^\d{15,17}$/";
     //将单斜杠改为双斜杠
        regExp="\\d{15,17}";
  • 1
  • 2
  • 3
  • 4

5.4 序列化ID插件-erialVersionUID

市场输入generateSerial
在这里插入图片描述
创建一个类,实现Serializable接口
右键,选择Generate,选择SerialVersionUID,则生成id
在这里插入图片描述

public class Person  implements Serializable {

    private static final long serialVersionUID = -5037059499277861230L;
}
  • 1
  • 2
  • 3
  • 4

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<String> 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<String> list=new ArrayList<>();
        list.add("dd-1");
        list.add("dd-2");
        System.out.println("dd3");
    }
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

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<String> list=new ArrayList<>();
        list.add("t-1");
        list.add("t-2");

    }
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

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

  • 1
  • 2

启动后效果:
在这里插入图片描述

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/153686
推荐阅读
相关标签
  

闽ICP备14008679号