Jetty 9中多个Spring war文件的外部化配置

时间:2015-04-16 21:12:57

标签: configuration spring-boot war jetty-9

我们正在构建一个大型Web应用程序作为多个WAR文件。每个WAR文件都是一个Spring Boot应用程序。对于开发和测试,我们可以独立运行这些WAR文件。但在生产中,我们希望在一个Jetty(9.x)实例下一起运行所有WAR文件。

我们的问题是,在这种情况下处理外部化配置的最佳方法是什么?每个WAR文件都有自己需要的一组配置文件(application.properties和其他)。我们如何设置,以便每个WAR文件读取自己的配置文件并忽略其余文件?

2 个答案:

答案 0 :(得分:0)

您可以使用spring.config.namespring.config.location为每个应用程序提供其外部配置文件的不同名称和/或位置。我已在您configure子类中覆盖的SpringBootServletInitializer方法中设置这些属性。

答案 1 :(得分:0)

另一个可能更好的选择是在每个Spring Boot应用程序的@SpringBootApplication类上使用@PropertySources注释。

例如, 然后,您可以为每个应用程序重命名application.properties,例如app1.properties,app2.properties等。

然后你可以启动Jetty,提供一个通用的配置文件夹 -Dapplication.home = C:/ APPHOME

在每个@SpringBootApplication中,添加一个看起来像这样的@PropertySources注释

@SpringBootApplication
@PropertySources({
        @PropertySource("classpath:app1.properties"),
        @PropertySource(value = "file:${application.home}/app1/app1.properties", ignoreResourceNotFound = true)
})
public class App1Config {
...
}

在开发过程中,将会读取应用程序#.properties。然后在生产中,当你定义application.home时,application.home / app#/ app#.properties will override the one in the classpath