16

如果我使用 Spring Tool Suite 或 Eclipse 的 Spring IDE 插件,我可以通过 2 种方式运行 Spring Boot 应用程序:

Run As:
    Spring Boot App
    Java Application

在此处输入图像描述

这两个命令都可以正常工作,并且可以毫无问题地启动我的 Spring Boot 应用程序。但是,我想了解这两个不同过程之间的区别。它们之间实际上有区别还是它们的工作方式相同?

4

1 回答 1

12

正如有人已经在评论中暗示的那样,存在一些差异。本文解释了您在启动配置编辑器中获得了一些额外的“花里胡哨”。

第二个也许更重要的区别是,从 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. 启动配置编辑器中的一些额外的启动特定 UI
  2. Boot 1.3 及更高版本的正常进程终止。
于 2016-05-30T15:44:48.387 回答