gpt4 book ai didi

java - Spring @PropertySources 值不被覆盖

转载 作者:行者123 更新时间:2023-12-01 23:45:03 26 4
gpt4 key购买 nike

我正在 Tomcat 中将 Spring Boot 应用程序部署为 WAR 文件。我希望我的 application-local.properties 能够覆盖 application.properties 文件中也存在的值。但似乎只有当 application.properties 中不存在这些键时,才会读取 application-local.properties 中的值。我的 application.properties 文件位于项目的 src/main/resources/中,application-local.properties 位于 ${catalina.home}/property_files/com/demo/config 文件夹

上下文.xml

<Parameter name="spring.profiles.active" value="local" override="false"/>

catalina.properties

shared.loader=${catalina.home}/property_files

AppConfig.java

@Configuration
@PropertySources({
@PropertySource("classpath:application.properties"),
@PropertySource("classpath:com/demo/config/application-${spring.profiles.active}.properties")
})
public class AppConfig extends WebMvcConfigurerAdapter {
}

编辑1:实际上,我的环境相关属性文件正在加载。但它不会覆盖内部属性文件中的任何值。

编辑2:感谢您的所有建议。但我发现我的问题是由目录优先级引起的。事实证明,根类路径上的属性文件比任何属性文件都具有更高的优先级,无论它们声明的顺序如何。

最佳答案

将默认配置/属性放在不同的文件中,而不是 application.properties。看来 application.properties 中定义的属性值具有最高优先级。

所以,这样的事情会起作用:

@Configuration
@PropertySource("classpath:application-env.properties")
@PropertySource(value="file:${application.home}/application-env.properties",ignoreResourceNotFound=true)
public class GlobalSettings {
//configuration values
}

在 Spring 4.x 和 Java 8 中测试

关于java - Spring @PropertySources 值不被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42339226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com