Spring如何将同一项目的bean分成多个Java进程?

时间:2016-11-24 14:10:08

标签: java spring spring-boot

我正在开发一个项目,它将为我们的应用程序提供多个流程。例如,inputHandleroutputHandler两者都可以共享一些常见的bean,但在大多数情况下都不会共享它们。

此外,我可以在同一台计算机上运行2个inputHandler进程和3个outputHandler进程。不过,我想单独构建和打包它们,这不是强制性的,但我想这也是一个很好的做法,对吧?

通常,我们为所有内容加载相同的上下文,但现在,我们希望更智能,更多内存和启动,高效。

如何将这些bean拆分为在多个java进程中高效运行?

我正在考虑拥有一个包common并放置可以在所有进程之间共享的@Bean,并且对于每个进程,我会有另一个包,然后从那里开始单独开发它。但是,我不确定这个策略;在与你们/女孩交谈之前。

提前致谢!

2 个答案:

答案 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文档。