为了账号安全,请及时绑定邮箱和手机立即绑定

RibbonConfiguration不能放在启动类的包下的原因

标签:
Java

ribbonconfiguration的包一定要放在Application启动类的外面,这是spring的一个小坑

原因ribbonconfiguration是一个组合注解,上面有@Component注解,也就是说ribbonconfiguration也是一种特殊的Component,

再看Application启动类上面的注解,也是一个组合注解,其中有一个是@ComponentScan,这个注解是用来扫描@Component,@@repository,@Controller,@Component,@Service 等等这些注解都会被扫描到包括@Configuration。启动类会扫描他所在包下面的所有@Component,所以ribbonconfiguration的包一定不能放在启动类包下面。

原因是:

spring的上下文其实是一个树状的上下文,而@SpringBootApplication上下文其实是一个主上下文,而

ribbon也是一个上下文,是一个子上下文,父子上下文扫描的包一旦重叠,会导致各种各样奇葩的问题:

例如 :事务不生效

具体内容讲解:https://blog.csdn.net/qq_32588349/article/details/52097943

https://img1.sycdn.imooc.com//5db59ddd0001505619201080.jpg

英文文档关于此类的讲解:(大概意思是说如果放在启动类下,会被共享成为全局的配置)

https://img1.sycdn.imooc.com//5db5a2d10001bdb613460739.jpg

所以有两种方法,一种把ribbonconfiguration放在启动类外面,另一种就是在yml中配置

https://img1.sycdn.imooc.com//5db5ac34000125ea08820137.jpg

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消