[待解决] Spring Boot 多环境配置,与@Value注解的冲突

平时开发时发现的问题,百度也没找到解决办法,只能先记录下来,后续,如果有了解决办法,再更新。同时,希望某个路过的大神,或者遇到过这个问题,并解决了的,可以指点一下。

背景:开发过程中,存在一些配置项,需要分环境的,本地环境、测试环境、正式环境等等。这些配置的话,按我自己的理解,分为两类,一类是spring自带的配置,比如spring.datasource、spring.redis等等,这一类的,通常是分成多个配置文件编写,最后通过spring.profiles.active来指定。

另一类,就是自定义的配置项,比如,短信服务的秘钥、文件存储服务的地址等等,之前都是在工具类中定义成常量。

然后每次切换环境去测试的时候,都需要改配置,就很烦。于是,想到,用@Value注解去自动注入,问题就产生了,因为使用spring.profiles.active指定配置环境的时候,配置都会随着改,于是理所应当的认为@Value也会随着指定的环境更改。但结果告诉我,并不会,它甚至都不会读取同一个文件中的配置。

问题复现:

application-dev.properties中的内容

application-devonline.properties中的内容

application-pro.properties中的内容

application.properties则选中dev环境

@Value回显,这里可以看到,第一个NFS-IP参数,使用的是pro中的配置项,第二个NFS-DIR参数使用的devonline中的配置。

 

结论:@Value遇到多个文件中有重复的配置项,只会选择最后一个(虽然我感觉是随机的~~~)。并不会随着spring.profiles.active所选定的配置所变动。百度了一番,也没找到什么解决办法,最终还是只能每次手动去改配置了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值