2021-08-01 springCloud环境搭建采坑记录之-FeignClient错误解决

springCloud环境搭建采坑记录之-FeignClient错误解决

  • 项目结构
    • 整体结构:SpringCloud-Alibaba
    • 注册中心:nacos
    • 版本依赖:
    • 错误1:
      • 错误原因:
    • 错误2:
      • 原因:spring的负载均衡不再使用ribbon,而是用spring-cloud-loadbalancer,但是nacos又默认依赖了ribbon,

项目结构

整体结构:SpringCloud-Alibaba

注册中心:nacos

版本依赖:

	    <spring.cloud.version>2020.0.0spring.cloud.version>
        <spring-cloud-alibaba.version>2021.1spring-cloud-alibaba.version>
        <spring-boot.version>2.4.2spring-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")

2021-08-01 springCloud环境搭建采坑记录之-FeignClient错误解决_第1张图片

错误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,

解决方法:
2021-08-01 springCloud环境搭建采坑记录之-FeignClient错误解决_第2张图片
nacos官方文档提到要禁用ribbon,只是不明显,,,
在pom依赖中排除ribbon的依赖,添加spring-cloud-loadbalancer

	    <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloudgroupId>
                    <artifactId>spring-cloud-starter-netflix-ribbonartifactId>
                exclusion>
            exclusions>
        dependency>

        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-loadbalancerartifactId>
        dependency>

解决问题,完美运行

你可能感兴趣的:(springboot,spring,cloud,alibaba)