知道springboot jar包可运行,debug告诉你怎么运行的
2020/3/13 17:02:38
本文主要是介绍知道springboot jar包可运行,debug告诉你怎么运行的,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
随着微服务的普及应用,springboot作为spring占领行业微服务的拳头,可能你早已熟练使用它去开发业务功能。当然,你可能知道springboot项目打成的jar可以直接运行,可能你也知道它的原理,但你真的知道它的原理吗,没有亲自debug下,可能就不那么肯定了吧。本文就来debug说下,springboot jar开始运行的真正起点:真正的main方法在哪里,怎么运行的
理论
为了方便阐述,理论先摆出
我假定创建一个spring boot 项目:microservice-comb-server,下面的jar都指这个项目的jar
在项目的pom.xml中引入了spring-boot-maven-plugin
,生成的jar就可以直接运行了。如下配置
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> 复制代码
因为引入了spring-boot-maven-plugin
,package
生成的jar里包含META-INF/MANIFEST.MF
文件,其内容如下
MacBook-Pro ~/mic$ unzip microservice-comb-server-1.0.0-SNAPSHOT.jar ··· MacBook-Pro ~/mic$ cat META-INF/MANIFEST.MF Manifest-Version: 1.0 Implementation-Title: microservice-comb-server Implementation-Version: 1.0.0-SNAPSHOT Built-By: yaoliang Implementation-Vendor-Id: com.skyler.cobweb Spring-Boot-Version: 2.1.0.RELEASE Main-Class: org.springframework.boot.loader.JarLauncher Start-Class: com.skyler.cobweb.CobwebCombServerApplication Spring-Boot-Classes: BOOT-INF/classes/ Spring-Boot-Lib: BOOT-INF/lib/ Created-By: Apache Maven 3.6.1 Build-Jdk: 1.8.0_151 Implementation-URL: https://projects.spring.io/spring-boot/#/spring-boot-starter-parent/microservice-comb/microservice-comb-server 复制代码
其中Main-Class: org.springframework.boot.loader.JarLauncher
才是真正的项目运行开始之地,而Start-Class: com.skyler.cobweb.CobwebCombServerApplication
也就是我们定义的main方法只在Main-Class
之后运行的。下面就通过debug来说明这个事实。
实操
debug准备阶段
debug这个jar容易,但如果要debug到这个jar的真正运行开始之地:org.springframework.boot.loader.JarLauncher
,就需要特殊的操作了。
首先,在项目中引入spring-boot-loader
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-loader</artifactId> <version>2.1.0.RELEASE</version> </dependency> 复制代码
然后,通过mvn clean repackage
将项目打jar包:microservice-comb-server-1.0.0-SNAPSHOT.jar
最后,通过idea
的JAR Application
配置jar和源码的位置
debug ing
在代码中打开JarLauncher
MainMethodRunner
并打上断点标记
点击之前配置的Jar Application
的debug
按钮,如图
效果
断点首先停在了JarLauncher.main方法
处,F9
快捷点到下一个断点
即MainMethodRunner.run()
处,而mainClassName
的值正是我们项目中自定义的main
方法:com.skyler.cobweb.CobwebCombServerApplication
,再F9
快捷点到下一个断点
现在,断点才到了我们自己的main
方法
小结
本文简述了下spring boot 可执行的jar的原理,旨在重点实操
部分,鼓励通过自己debug代码的方式,真正切实清晰的感受原理,从抽象的概念转到具体的眼前。
原味地址:知道springboot jar包可运行,debug告诉你怎么运行的
这篇关于知道springboot jar包可运行,debug告诉你怎么运行的的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26大厂数据结构与算法教程:入门级详解
- 2024-12-26大厂算法与数据结构教程:新手入门指南
- 2024-12-26Python编程入门指南
- 2024-12-26数据结构高级教程:新手入门及初级提升指南
- 2024-12-26并查集入门教程:从零开始学会并查集
- 2024-12-26大厂数据结构与算法入门指南
- 2024-12-26大厂算法与数据结构入门教程
- 2024-12-26二叉树入门教程:轻松掌握基础概念与操作
- 2024-12-26初学者指南:轻松掌握链表
- 2024-12-26平衡树入门教程:轻松理解与应用