springCloud环境搭建采坑记录之-FeignClient错误解决
项目结构
整体结构:SpringCloud-Alibaba
注册中心:nacos
版本依赖:
<spring.cloud.version>2020.0.0</spring.cloud.version>
<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
<spring-boot.version>2.4.2</spring-boot.version>
参考地址:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
错误1:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field applyDemoFeignService in com.hdwater.engin.demo.main.service.impl.EnginServiceImpl required a bean of type 'com.hdwater.apply.demo.service.ApplyDemoFeignService' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.hdwater.apply.demo.service.ApplyDemoFeignService' in your configuration.
错误原因:
依赖了feignClient的工程后,因为没有在@EnableFeignClients注解中添加basePackages参数,导致Spring ioc不能正确扫描bean文件。解决方法,再启动类上的EnableFeignClients注解中添加basePackages如下:
@EnableFeignClients(basePackages = "com.hdwater")
错误2:
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
原因:spring的负载均衡不再使用ribbon,而是用spring-cloud-loadbalancer,但是nacos又默认依赖了ribbon,
解决方法:
nacos官方文档提到要禁用ribbon,只是不明显,,,
在pom依赖中排除ribbon的依赖,添加spring-cloud-loadbalancer
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
解决问题,完美运行