微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

覆盖Spring Boot application.properties的系统环境属性

如何解决覆盖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 举报,一经查实,本站将立刻删除。