如果我使用Spring工具套件或SpringIDE插件进行eclipse,我可以通过2种方式运行Spring Boot应用程序:
Run As:
Spring Boot App
Java Application
这两个命令都可以正常工作,并且可以毫无问题地启动我的Spring Boot应用程序。但是,我想了解这两个不同进程之间的区别。它们之间实际上有区别还是它们的工作方式相同?
正如有人已经在评论中暗示的那样,有几个区别。本文解释了您在启动配置编辑器中获得一些额外的“铃铛和口哨”。
第二个可能也是更重要的区别是,自Boot 1.3以来,Spring Boot App提供了一个JMX bean,允许STS很好地要求关闭应用程序。当您从IDE终止应用程序时,例如通过单击停止/重新启动按钮,STS使用此JMX bean要求关闭引导应用程序。这是“运行为启动应用程序”启动器中实现的功能,因此如果您使用“运行为Java应用程序”,它不会生效。
Java启动器简单地使用Java的Process()方法终止与启动相关的进程。这是一种更“激进”的方式来杀死相关进程,并且可能不允许应用程序正确清理内容,例如干净地关闭数据库连接。
所以…总之,你会得到两件事: