项目场景:
- Ribbon实现特殊化定制负载均衡,根据不同服务实现不同的负载均衡策略,并且启动服务正常;
- 实现方式是配置类的方式;
- 调用接口,在实现rest请求时,就报错了;
No qualifying bean of type ‘com.netflix.loadbalancer.IRule’ available: expected single matching bean
原因分析:
原因:配置类写在了启启动类的同子包中
- 官网中明确说明:
官方文档明确给出了警告:这个自定义配置类不能放在@ComponentScan所扫描的当前包下以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享
- 而主启动类的
@SpringBootApplication
注解中就有这个注解,从而导致多个bean一起被共享,导致异常。
解决方案:
将配置类移到启动类得(当钱包及子包)以外即可解决,这里测试项目演示
- 启动类在包
jhh
中,那么配置类就能在包jhh
内,包括其子包