运行 As: Spring Boot App 和 运行 As: Java Application 之间有区别吗?
Is there a difference between Run As: Spring Boot App and Run As: Java Application?
如果我使用 Spring Tool Suite 或 Spring IDE eclipse 插件,我可以 运行 spring 启动应用程序 2 种方式:
Run As:
Spring Boot App
Java Application
这两个命令都有效,可以毫无问题地启动我的 spring 启动应用程序。但是,我想了解这两个不同过程之间的区别。它们之间真的有区别还是它们的工作方式相同?
正如有人已经在评论中暗示的那样,存在一些差异。 This article 说明您在启动配置编辑器中得到一些额外的 'Bells and Whistles'。
第二个也许更重要的区别是,自 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() 方法简单地终止与启动相关的进程。这是一种更 'aggressive' 的方式来终止相关进程,并且可能不允许应用程序正确清理内容,例如干净地关闭数据库连接。
所以...总而言之,您得到两件事:
- 启动 conf 编辑器中的一些额外的启动特定 UI
- Boot 1.3 及更高版本的进程正常终止。
如果我使用 Spring Tool Suite 或 Spring IDE eclipse 插件,我可以 运行 spring 启动应用程序 2 种方式:
Run As:
Spring Boot App
Java Application
这两个命令都有效,可以毫无问题地启动我的 spring 启动应用程序。但是,我想了解这两个不同过程之间的区别。它们之间真的有区别还是它们的工作方式相同?
正如有人已经在评论中暗示的那样,存在一些差异。 This article 说明您在启动配置编辑器中得到一些额外的 'Bells and Whistles'。
第二个也许更重要的区别是,自 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() 方法简单地终止与启动相关的进程。这是一种更 'aggressive' 的方式来终止相关进程,并且可能不允许应用程序正确清理内容,例如干净地关闭数据库连接。
所以...总而言之,您得到两件事:
- 启动 conf 编辑器中的一些额外的启动特定 UI
- Boot 1.3 及更高版本的进程正常终止。