我正在开发一个项目,它将为我们的应用程序提供多个流程。例如,inputHandler
和outputHandler
两者都可以共享一些常见的bean,但在大多数情况下都不会共享它们。
此外,我可以在同一台计算机上运行2个inputHandler
进程和3个outputHandler
进程。不过,我想单独构建和打包它们,这不是强制性的,但我想这也是一个很好的做法,对吧?
通常,我们为所有内容加载相同的上下文,但现在,我们希望更智能,更多内存和启动,高效。
如何将这些bean拆分为在多个java
进程中高效运行?
我正在考虑拥有一个包common
并放置可以在所有进程之间共享的@Bean
,并且对于每个进程,我会有另一个包,然后从那里开始单独开发它。但是,我不确定这个策略;在与你们/女孩交谈之前。
提前致谢!
答案 0 :(得分:2)
您可以将Spring上下文放在一个公共模块中,但可以通过Spring" profiles"对您的bean进行分区。
文档:http://docs.spring.io/autorepo/docs/spring-boot/current/reference/html/boot-features-profiles.html
Spring Profiles提供了一种隔离应用程序配置部分的方法,并使其仅在某些环境中可用。
所以你的inputHandler进程可以在" inputHandler"中使用bean。简介等。
@Configuration
@Profile("inputHandler")
public class InputHandlerConfiguration {
// ...
}
@Configuration
// no profile - applicable to all profiles
public class CommonConfiguration {
// ...
}
您可以通过设置spring.profiles.active
属性来控制哪些配置文件处于活动状态。您可以使用逗号分隔多个活动配置文件。
答案 1 :(得分:0)
考虑使用Spring's Active Profiles来帮助您对Spring bean进行分区。
关于Active Profiles的Spring文档。