Spring @Profile 无效的坑

83 阅读1分钟

1. 目前项目有个特殊的需求,当使用uat环境时需要链接 双端rabbitmq,如果是生产环境时只用链接1个mq,也是应为运维权限不在自己手中,才出现了 uat 的mq 和 dev的mq 不同步的问题,没法办乙方只能受制于人。

2. 目前认为最好的办法是使用 @Profile 进行环境的区分如果是prod则自动使用spring的AutoConfig帮助注入mq。如果是uat则手动注入Connnent等bean进行区分

3.在使用@Profile时,

ede8afe7db4190a9ad4c59fdc2d6bc4.png 本以为可以开心快乐的解决问题,此时问题出现了,我需要的bean迟迟不能注入。 在去掉profiel注解后bean又可以自动注入,证明注解其实是生效了的,但是为什么和环境的uat无法匹配呢?

以下yml中配置文件结构

image.png

image.png

经过断点调试发现 spring在做profile匹配的时候 直接把整个表达式给取出来了,并没有将 表达式进行转换,将profile修改为

fba0a950b55086560fc4dc4f29a9241.png ok生效了。。。

本人才疏学浅也希望各位大佬能给个解答到底是因为本人,配置问题,还是spring 操作就是如此。