解决@FeignClient注入service失败问题

目录
  • @FeignClient注入service失败
  • Feign注入失败之坑
    • 错误信息
    • 加上之后,问题解决

@FeignClient注入service失败

在入口类上方加入注解

@EnableFeignClients(basePackages = {"com.ritoinfo.framework.evo.sp.sys.api","com.yqjr.sp.eco.member"})

由于使用pom引入service jar包,如果不加basePackage,会找不到包所在路径

Feign注入失败之坑

今天碰到一个很坑的问题,feign 注入失败。

错误信息

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
12-18 15:29:57.654 ERROR [o.s.b.diagnostics.LoggingFailureAnalysisReporter] -
***************************
APPLICATION FAILED TO START
***************************

Description:
Field messageFeign in com.pance.scheduler.mdm.dataCenterTask.DataCenter required a bean of type 'com.pance.common.feign.MessageFeign' 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.pance.common.feign.MessageFeign' in your configuration.

很简单的一个报错信息,

直接看Application ,发现以及包含注解 @EnableFeignClients,以及 @ComponentScan("com.pance"),并且feign 也包含在 com.pance目录下。

查了良久,

终于在最崩溃的时候,发现了一个细节的坑,feign 时在另外的common 包中引入的,虽然@ComponentScan("com.pance") 指定了扫描路径包含了feign 的路径,但是feign如果不是在相同的module 下,就必须加上 自己的扫描范围,例如

@EnableFeignClients(basePackages = "com.pance")

加上之后,问题解决

@EnableFeignClients(basePackages = "com.pance")
@ComponentScan("com.pance")
@EnableScheduling
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class SchedulerApplication {
    public static void main(String[] args) {
        /*only start one application*/
        SpringApplication.run(SchedulerApplication.class, args);
    }
}

发现网上说都是要配置@EnableFeignClients,以及引入jar 包,但是这个basePackage 这个值很少有说明。就写一下自己踩坑的惨痛经历。

Feign的jar包如果和服务在同一个工程下,需要指定basePackage

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Cloud中关于Feign的常见问题总结

    一.FeignClient接口,不能使用@GettingMapping 之类的组合注解 代码示例: @FeignClient("microservice-provider-user") public interface UserFeignClient { @RequestMapping(value = "/simple/{id}", method = RequestMethod.GET) public User findById(@PathVariable(&quo

  • 解决Feign切换client到okhttp无法生效的坑(出现原因说明)

    提示:如果只看如何解决问题,请看文章的末尾如何解决这个问题 1. 场景描述 最近项目中使用了feign当做http请求工具来使用.相对于httpclient.resttemplate来说,fegin用起来方便很多. 然后项目有httptrace的需求,需要输出请求日志. 所以就开启了feign自己的日志,发现它自带的日志是debug级别才能打印.而且是逐行打印的,看日志非常的不方便.所以需要输出json格式的日志最好. 2.解决步骤 2.1 引入feign依赖 <dependency> <

  • @FeignClient注入找不到异常如何解决

    前言 Springcloud中的服务间调用是通过Feign进行调用的,在调用方服务中,我们需要定义一些带有@FeignClient注解的接口类.并且在启动类上加上@EnableFeignClients注解. 程序启动的时候,会检查是否有@EnableFeignClients注解,如果有该注解,则开启包扫描,扫描带有@FeignClient注解的接口. 这里结合之前遇到的一个问题来和大家一起学习下@EnableFeignClients启动过程. 问题描述 之前搭建一个简单demo的时候,启动之后总

  • 解决@FeignClient注入service失败问题

    目录 @FeignClient注入service失败 Feign注入失败之坑 错误信息 加上之后,问题解决 @FeignClient注入service失败 在入口类上方加入注解 @EnableFeignClients(basePackages = {"com.ritoinfo.framework.evo.sp.sys.api","com.yqjr.sp.eco.member"}) 由于使用pom引入service jar包,如果不加basePackage,会找不到包

  • springboot使用@value注入配置失败的解决

    目录 springboot使用@value注入配置文件失败 问题解决方向一 问题解决方向二 @Value注入失败,注入值为null的问题 大概就是下面这样 结果不知道为什么,@Value注入一直为空?? 原因如下 解决办法 springboot使用@value注入配置文件失败 遇到的问题原因是:类中注入对象不能用static. 问题解决方向一 1.改为如图示,去掉static 问题解决方向二 1.仍然定义静态变量,但在其set方法上使用@Value进行赋值 2.仍然定义静态变量,同时定义一个普通

  • 解决SpringMvc中普通类注入Service为null的问题

    SpringMvc中普通类注入Service为null 场景: 使用Quartz定时器时,普通的java类需要注入spring的service类,在调用时报错! 解决方式: /** * 定时获取课程的service */ @Autowired protected QuartzGetCourseService quartzGetCourseService = (QuartzGetCourseService) SpringContextUtil .getBean("quartzGetCourseSe

  • 关于@Autowired注入依赖失败的问题及解决

    目录 @Autowired注入依赖失败的问题 1.现象描述 2.问题分析 3.解决方案 @Autowired依赖注入为啥不推荐了 警告内容 依赖注入的方式 @Autowired是干啥的 @Inject是干啥的 @Resource是干啥的 spring建议 @Autowired注入依赖失败的问题 1.现象描述 在Spring Boot项目中使用@Autowired注解,程序启动时发现服务启动失败,提示: Description: Field metrics in com.be.fallback.s

  • @Autowired 自动注入接口失败的原因及解决

    目录 @Autowired自动注入接口失败 可以这样做 @Autowired自动注入失败报空指针异常 今天就遇到了这个问题 @Autowired 自动注入接口失败 有个自动注入不能注入的时候, 可以这样做 然后解决问题. @Repository // * @Repository 它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean. //* 同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型 @Autowired 自动注入失败报空指针异常 同一

  • 解决redis服务启动失败的问题

    最近学redis,就遇到了各种坑,在这里分享一下 我是将redis做成后台 安装,配置环境变量统统省略掉了. 做成后台服务呢,首先,cd到redis的安装目录下,再cd到util,接着执行 ./install_server.sh 然后修改服务名称,将原来的redis_6379更名为redisd,这样下次启动比较方便,命令如下: cd /etc/init.d/ mv redis_6379 redisd 然后,就可以启动redis服务了 service redisd start 启动之后,就可以进入

  • springboot 如何解决static调用service为null

    springboot static调用service为null @PostConstruct注解好多人以为是Spring提供的.其实是Java自己的注解. Java中该注解的说明: @PostConstruct该注解被用来修饰一个非静态的void()方法.被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次.PostConstruct在构造函数之后执行,init()方法之前执行. 通常我们会是在Spring框架中使用到@PostConstruc

  • 在zuulFilter中注入bean失败的解决方案

    zuulFilter注入bean失败 一.为什么要用到这个 上周想实现在网关层 zuul 实现用户认证操作,即需要在网关过滤器中调用其他的微服务,按常规做法在 filter 中用 @Autowired 注解一个feign 接口,启动 一直失败,用度娘谷歌查了又查,只找到一些类似[在过滤器中注入bean]失败,但说的都是springMVC 并不是springcloud中的网关层 二.解决方法 查了很久,最终发现问题所在,其实在启动报错就提示很明显了,找不到相关实例,没错feign接口的实现类事实上

  • Java实现普通类注入service对象

    普通类注入service对象 找了很多办法,无论是加@Component还是编写工具类实现ApplicationContextAware,始终为null. 最后使用这两行代码解决: WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); DailySurveyService service = (DailySurveyService) context.getBean("dailySurvey

  • java实现在普通类中注入service或mapper

    普通类中注入service或mapper 1.类加@Component注解 2.注入需要引入的service @Autowired private UserService userService; 3.建静态文件 private static UserService users; 4.初始化方法 @PostConstruct public void init() { users= userService; } 5.调用 users.selectUser(user); mapper为null的情况

随机推荐