我准备战斗到最后,不是因为我勇敢,是我想见证一切。 --双雪涛《猎人》
[TOC]
Thinking
- 一个技术,为什么要用它,解决了那些问题?
- 如果不用会怎么样,有没有其它的解决方法?
- 对比其它的解决方案,为什么最终选择了这种,都有何利弊?
- 你觉得项目中还有那些地方可以用到,如果用了会带来那些问题?
- 这些问题你又如何去解决的呢?
声明:本文基于springboot 2.1.3 2.1.3.RELEASE
在上一篇中有说到,springboot有多种启动方式,那么有一个疑问啊?
在使用idea 直接右键启动,加载SpringBoot入口类的类加载器是什么呢?跟使用Java -jar 有区别嘛?
- 显然,直接使用右键启动:是系统/应用类加载器 AppClassLoader
- 使用java -jar *.jar 就是上述一直分析的,自定义的类加载器
1、源码的调试
在源码的调试中,像在研究SpringBoot启动方式的类加载过程中,org.springframework.boot.loader
的jar是不会影响到springboot的执行流程的,那么直接在idea中的org.springframework.boot.loader
打断点,根本就没有作用。
这里就引入了一种Java 自身就支持的远程Debug
模式:JDWP
。
2、具体操作
在java -h 中可以看到对JDWP
的描述。
根据提示运行指令
对端口进行监控:
$ java -agentlib:jdwp=transport=dt_socket,server=y,address=5050 spring_lecture-0.0.1.jar
等待远程服务器启动,监控端口为5050
- 使用idea 创建 5050 远程端口,并且以debug启动
这样就实现了远程debug了。
🐮
本文仅供笔者本人学习,有错误的地方还望指出,一起进步!望海涵!
转载请注明出处!
欢迎关注我的公共号,无广告,不打扰。不定时更新Java后端知识,我们一起超神。
——努力努力再努力xLg
加油!