@Iulian
Rosca建议使用像这样的模式,这
${properties_home}/${application_id}/application.properties使我想到了定义像这样的自定义JVM属性的想法,app.config.root并使用此属性
spring.config.location在应用程序生命周期的早期覆盖了它。
我的应用程序类现在看起来像这样,并适用于嵌入式和容器部署:
@SpringBootApplicationpublic class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return configureApplication(builder); } public static void main(String[] args) { configureApplication(new SpringApplicationBuilder()).run(args); } private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) { return builder .sources(Application.class) .properties("spring.config.location:${${app.config.root}/myapp1/:#{null}}"); }}此解决方案的重要说明:
app.config.root
必须通过JVM或JNDI属性在外部设置app.config.root
只能指定一个外部配置路径(对于我的要求,这已经足够了),而spring.config.location
可以指定多个逗号分隔的路径SpringApplicationBuilder.properties(...)
设置应用程序的默认属性。因此,spring.config.location
无法再在外部进行指定,因为JVM或JNDI属性的优先级高于默认属性,因此将被spring.config.location
再次覆盖。



