如何解决覆盖Spring Boot application.properties的系统环境属性
在spring boot应用程序中,我在application.properties中有一个属性
spring.datasource.url: jdbc:MysqL://host1:3306/test?useSSL=false&autoReconnect=true
但是,当我启动该应用程序时,它正在连接到完全不同的数据库。
因此,当我在/ actuator / env中检查URL的env值时,它表明该值已被环境属性覆盖
SPRING_DATASOURCE_URL": {
"value": "jdbc:MysqL://host2:3306/test","origin": "System Environment Property \"SPRING_DATASOURCE_URL\""
}
我不知道在哪里配置此环境属性。 我只希望它从我的属性文件而不是环境中选择。有什么办法吗?
解决方法
在Spring Boot中有17种设置和覆盖属性的方法,它们是有序的, 例如-罐外的application.properties在罐内的application.properties之前。
您可以搜索以所有这些方式覆盖属性的潜在来源- (从最强到最弱排序)-从spring boot参考-https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-复制配置
当devtools处于活动状态时,$ HOME / .config / spring-boot目录中的Devtools全局设置属性。
测试中的@TestPropertySource批注。
测试中的properties属性。在@SpringBootTest和测试注释上可用,用于测试应用程序的特定部分。
命令行参数。
来自SPRING_APPLICATION_JSON的属性(嵌入在环境变量或系统属性中的嵌入式JSON)。
ServletConfig初始化参数。
ServletContext初始化参数。
java:comp / env中的JNDI属性。
Java系统属性(System.getProperties())。
OS环境变量。
一个RandomValuePropertySource,仅具有随机属性。*。
打包的jar之外的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)。
打包在jar中的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)。
打包的jar之外的应用程序属性(application.properties和YAML变体)。
打包在jar中的应用程序属性(application.properties和YAML变体)。
@Configuration类上的@PropertySource批注。请注意,在刷新应用程序上下文之前,不会将此类属性源添加到环境中。现在配置某些属性(例如logging。*和spring.main。*)为时已晚,这些属性在刷新开始之前就已读取。
默认属性(通过设置SpringApplication.setDefaultProperties指定)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。