继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

慕哥6344354
关注TA
已关注
手记 1
粉丝 0
获赞 2

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

http://img2.mukewang.com/5db59ddd0001505619201080.jpg

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

http://img.mukewang.com/5db5a2d10001bdb613460739.jpg

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

http://img1.mukewang.com/5db5ac34000125ea08820137.jpg

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP