如何在同一项目中管理多个Spring Boot应用?

6
学习Spring Boot作为一些C/C++守护进程的替代品。我的目标是将一个单独的项目编译成一个单独的jar/war文件。然后使用多个shell脚本来通过命令行简单地启动我想要的那个。我正在使用Eclipse Kepler来开发和测试各个Spring Boot应用程序,并注意到了一个不希望发生的行为。如果在同一个包中有4个Spring Boot应用程序类,如果我使用Eclipse的启动配置启动其中任何一个,所有4个都会在同一个Spring Boot中启动。我怀疑这是因为它们全部都有@SpringBootApplication注释,启动其中一个会导致Spring Boot“扫描”当前包和子包。
我的问题是,在同一个包中是否有多个Spring Boot应用程序的方法?我只需创建一个ControllerApplication,带有单个@SpringBootApplication并传递我想要启动的守护程序名称,然后从那里开始吗?还是其他选择?还是我需要为每个守护进程创建一个单独的项目?tia,adym
1个回答

13

您可以使用@ComponentScanexcludeFilters注释来排除Spring Boot应用程序中的特定组件

@ComponentScan(basePackages = "your.package", 
               excludeFilters = @Filter(SpringBootApplication.class)) 

从这一点开始,您可能会遇到许多依赖项问题,您可以使用相同的原则解决它们。

但是

这可能在您的IDE中有效,但生成的Spring Boot jar文件将只有一个单独的主类属性。因此,即使您找到了解决方法,我认为您应该选择:

  • 将每个Spring Boot应用程序打包到自己的Maven项目中;
  • 或者拥有一个具有多个Spring配置文件的单个Spring Boot应用程序。

查看这些其他答案以使用多个Spring配置文件启动Spring Boot应用程序:


谢谢Alex!我觉得为了简单起见,我打算每个Spring Boot应用都使用独立的项目。 - lincolnadym

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接