2017-03-03 70 views
0

我基本上試圖做的,是建立一個具有多個ApplicationContexts的Webapp。這是SpringApplicationBuilder可以實現的。我面對的問題是,你必須在你的Spring-Boot應用程序中「硬編碼」所有ApplicationContexts(https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-application.html#boot-features-fluent-builder-api創建可配置的Spring ApplicationContext層次結構

我正在尋找一種方法來加載每個配置的子模塊的ApplicationContexts?我想包含和排除特定的Maven構建模塊。這可能嗎?這些模塊各自獨立,因爲我們使用的是域驅動方法。

回答

0

您可以簡單地使用命令行參數來決定運行哪個模塊。

public enum Module { 
    MODULE1(Context1.class), MODULE2(Context2.class), MODULE3(Context3.class); 
    Module(Class contextClass) ... 
} 

SpringApplicationBuilder builder = new SpringApplicationBuilder() 
    .sources(Parent.class) 
    .bannerMode(Banner.Mode.OFF); 
String[] modules = args[0].split(","); 
for(int i = 0; i < modules.length; i++){ 
    builder.child(Module.valueOf(modules[i]).contextClass); 
} 
builder.run(args); 

在上面的簡單的例子,可以給逗號分隔模塊等的啓動:
mvn spring-boot:run -Drun.arguments=module2,module3