当前位置:   article > 正文

【已解决】springCould整合feign提示required a bean of type xxx that could not be found_required a bean of type 引入的包

required a bean of type 引入的包

【已解决】springCould整合feign提示required a bean of type xxx that could not be found

今天在使用springcloud整合feign的时候,提示


Description:

Field feignTestClient in com.example.xxxx.controller.xxxxx required a bean of type 'com.example.xxxx.remote.FeignTestClient' 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.xxxxx.xxxx.xxxxx.FeignTestClient' in your configuration.

 

先不废话,先上源码:

1、启动类,注解@EnableFeignClients 和 @EnableDiscoveryClient, 作为eureka客户端,服务发现

 

2、引入依赖

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
       </dependency>
       
       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

 

3.定义feign接口 (另外accountserver服务要提供好相应的接口/account)

4.引入bean使用

 @Autowired
    private FeignTestClient feignTestClient;

 

 @GetMapping(value = "/feignclient")
    public String name() throws Exception {
        
        String name="name";
        name = feignTestClient.account();
        
        return "feignclient result:" +name;
    }
 

写好代码后运行, 发现还是不能用, 已经完全按照网上教程了。 调试了很久, 都没发现问题。

看到报错是  Consider defining a bean of type

心里想,这肯定是没有注入到spring容器里面,导致找到对应的这个bean, 但是明明已经设置了组件扫描路径了啊@ComponentScan({"com.example.demo.controller", 
    "com.example.demo.service"
})

然后查询@EnableFeignClients 的源码,发现注解里面有几个参数, 一想,会不会是因为EnableFeignClients不知道改扫描那个路径,不知道要注入那些bean,所以没法注入到spring里面呢?

 

好啦,谜题解开了,确实是FeignClients 要单独设置需要注解的路径和bean,才能交到spring那里托管, 解决方式有2种:

  1.直接注解对应的class

  @EnableFeignClients(basePackageClasses=FeignTestClient.class)

  2.类似spring组件扫描一样,扫描路径

 @EnableFeignClients(basePackages="com.example.*")

 

   2种都试过了,亲测有效。

 

总结:使用feignclines的时候,除了spring本身的组件扫描, 也要注明对应扫描的路径或者需要注入的bean。

           通过这个事情,发现其实网上很多博客教程都是有问题, 还是要多看看官方文档,多看看源码,问题就迎刃而解了。

如果问题,欢迎各位大佬指正。

 

 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号