Run As:Spring Boot App和Run As:Java Application之间有区别吗?

Mat*_*ana 10 spring spring-ide spring-tool-suite spring-boot

如果我使用Spring Tool Suite或Spring IDE插件进行eclipse,我可以通过2种方式运行spring boot app:

Run As:
    Spring Boot App
    Java Application
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这两个命令都可以工作,并且可以启动我的Spring启动应用程序而不会出现问题.但是,我想了解两个不同过程之间的区别.他们之间确实存在差异,还是他们的工作相同?

Kri*_*ris 7

有一些差异,正如有人已在评论中暗示的那样.本文解释了您在启动配置编辑器中获得了一些额外的"铃声和口哨声".

第二个也许更重要的区别是,自Boot 1.3开始,Spring Boot App提供了一个JMX bean,允许STS很好地关闭应用程序.当您从IDE终止应用程序时,例如通过单击停止/重新启动按钮,STS使用此JMX bean来请求启动应用程序关闭.这是在"Run As Boot App"启动程序中实现的功能,因此如果您使用"Run As Java App",它将不会生效.

Java启动程序使用Java的Process.destroy()方法简单地终止与启动相关的进程.这是一种更具侵略性的方法来杀死相关进程,并且可能不允许应用程序正确清理内容,例如干净地关闭数据库连接.

所以...总之,你得到两件事:

  1. 启动conf编辑器中的一些额外的启动特定UI
  2. Boot 1.3及更高版本的优雅进程终止.