[SpringBoot/JavaEE] SpringBoot应用程序的启动与停用x4种方式
SpringBoot版本: 2.1.6.RELEASE
1 启动
方式1 – IntelliJ IDEA - Windows
右键启动类SpringBootSampleApplication.java > Run “SpringBootSampleApplication#main()”
方式2 – Maven – Windows
E:
cd E:\Projects\SpringBootSample
mvn clean
mvn spring-boot:run (非后台运行)
或 mvn spring-boot:run > ./Applog.log & (后台运行)
方式3 – Maven/JAR – AnyPlatform [推荐]
思路:mvn install编译生成出项目的jar,然后运行jar
方式4 - Maven/Linux Shell - Linux [未亲测]
请参见: 正确、安全地停止SpringBoot应用服务: 部署为Unix/Linux Service -博客园
2 停用
方式1 – 命令行 – AnyPlatform
方式2 – IDEA – Windows
方式3 – actuator – AnyPlatform [推荐]
利用端点管理器actuator,实现远程管理。
Actuator内容详见本文:端点管理actuator
方式4 - Maven/Linux Shell - Linux [未亲测]
请参见: 正确、安全地停止SpringBoot应用服务: 部署为Unix/Linux Service -博客园
3 延申:nohup 命令
- nohup 英文全称
no hang up(不挂起),用于在【系统后台】不挂断地运行命令,【退出终端】不会影响程序的运行。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫nohup.out的文件到【当前目录】下。如果【当前目录】的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out文件中
Z FAQ
Q: mvn spring-boot:run "-Dspring-boot.run.arguments=--spring.profiles.active=xxx" 与 java -jar xxx.jar 的本质区别?(必读)
- 两者本质区别在于:
mvn spring-boot:run从"【源码/classpath】"跑,java -jar从"【打包好的可执行 Jar】"跑。前者是【开发态】,后者是【部署态】。
| 维度 | mvn spring-boot:run |
java -jar xxx.jar |
|---|---|---|
| 前提 | 在项目根目录、无需先打包 | 必须先 package 出可执行 jar(spring-boot:repackage) |
| 运行对象 | target/classes + 依赖 classpath,直接编译后运行 |
已重打包的 fat jar(内嵌依赖、内嵌容器) |
| 配置加载 | 优先读 src/main/resources,可实时改资源 |
读 jar 内打包好的 BOOT-INF/classes |
| 典型场景 | 本地开发、调试、热重载 | 测试/生产部署,产物可拷贝到任意机器 |
| 是否 fork JVM | 默认另起一个 JVM 运行应用(可 -Dspring-boot.run.fork=false 关) |
当前 java 进程即应用进程 |
| 外部依赖 | 依赖本机 Maven 仓库解析 | 无需 Maven,只要 JRE/JDK |
| 停止方式 | Ctrl+C 停 fork 出的进程 | 终止 java 进程 |
- 关于问题中涉及的 profile 参数:
mvn方式:-Dspring-boot.run.arguments=--spring.profiles.active=xxx,由 spring-boot-maven-plugin 把--spring.profiles.active=xxx作为【启动参数】传给 fork 的应用进程。java -jar方式:直接java -jar xxx.jar --spring.profiles.active=-xxx(或-Dspring.profiles.active=xxx),效果等价——最终都是交给SpringApplication解析命令行参数。
两者最终都会命中
application-{profile}.yml等Profile配置,区别只在"参数从哪一层注入、跑的是不是打包产物"。
选型建议: 改代码、调配置就
mvn spring-boot:run(配合 devtools 可热更新);要交付、部署、上服务器就跑java -jar。
X 推荐文献
本文作者:
千千寰宇
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号