【发布时间】:2015-04-03 19:02:03
【问题描述】:
我正在寻找这个问题的解决方案。
我有几个属性文件(application.properties、application-realdb.properties)。假设我从“realdb”弹簧配置文件开始。现在我想在部署到 tomcat 时覆盖我的属性。 我决定将文件放入 /lib 文件夹,因为它自动位于类路径中,但我没有找到更好的(即应用程序特定的类路径文件夹)
所以我可以将 application.properties 放在那里,只要我只有一个应用程序,它就可以工作。如果我有多个 Spring Boot 应用程序,我想命名文件(注意:应用程序特定命名)
我可以使用应用程序。特定的 spring 配置文件并添加 /lib/application-appname.properies,其中包括传递正确配置文件的必要性
我可以使用 --spring.config.name,我不喜欢它,因为需要在命令行中传递它(我不知道在 war 文件中这样做的可能性,也许在spring boot主类中设置系统属性?)
-
在 @ConfigurationProperties(locations = "classpath:appname.properties, prefix..." 中,它可以按照我想要的方式正常工作,但仅适用于我绑定值的类。
总结: 有没有办法在类路径上复制特定命名的文件,从而覆盖 application.properties????
更新 建议的解决方案有效我现在可以使用不同的属性名称,但在外部类路径中加载文件仍然存在问题。
Adding [applicationConfig: [classpath:/my-app-realdb.properties]] PropertySource with search precedence immediately lower than [applicationConfigurationProperties]
Adding [applicationConfig: [classpath:/config/my-app.properties]] PropertySource with search precedence immediately lower than [applicationConfig: [classpath:/my-app-realdb.properties]]
Adding [applicationConfig: [classpath:/my-app.properties]] PropertySource with search precedence immediately lower than [applicationConfig: [classpath:/config/my-app.properties]]
最后一个在.war中,我想/lib/config文件夹应该有优先权
3. A classpath /config package
4. The classpath root
所以寻找答案仍在进行中
更新2 看起来顺序是
1. /config/application-<profile_specific>.properties
2. /application-<profile_specific>.properties
3. /config/application.properties
4. /application.properties
这意味着我无法覆盖所有非配置文件特定属性,这可能是预期的,但对我来说,如果我只想要一个文件来统治它们并不是很有用。
【问题讨论】:
标签: spring tomcat properties spring-boot