SpringBoot使用quartz,注入feignClient,client为null问题

 更新时间:2024年11月12日 08:51:56   作者:So Young_  
在SpringBoot中使用Quartz和FeignClient时,如果通过@Autowired或构造方法注入FeignClient导致为null,可以使用Spring提供的通过文件名获取bean的方式解决,这种方法在Quartz启动时通过反射注入类,而类还未初始化好,导致FeignClient为null的问题

SpringBoot使用quartz,注入feignClient,client为null

使用@autowired,活着构造方法注入,打断点查看注入的feigncliet为null, 搜索网上的一些博客,大致原因是因为quartz启动是通过反射将一些类注入进来,启动的时候引用这个类还没初始化好,下面是解决方案:

使用spring提供的通过文件名获取bean的方式

注入进来

@Component
public class SpringUtil implements ApplicationContextAware {
 
    private static ApplicationContext applicationContext;
 
    @Override
    public void setApplicationContext(@NotNull ApplicationContext applicationContext) throws BeansException {
        if (SpringUtil.applicationContext == null) {
            SpringUtil.applicationContext = applicationContext;
        }
    }
 
    // 通过name获取 Bean.
    @NotNull
    public static Object getBean(String name) {
        return applicationContext.getBean(name);
    }
 
    // 通过class获取Bean.
    @NotNull
    public static <T> T getBean(Class<T> clazz) {
        return applicationContext.getBean(clazz);
    }
 
    // 通过name,以及Clazz返回指定的Bean
    @NotNull
    public static <T> T getBean(String name, Class<T> clazz) {
        return applicationContext.getBean(name, clazz);
    }
}

使用的时候通过类名加载类

正常使用即可

CommunicationClient communicationClient = SpringUtil.getBean(CommunicationClient.class);
 
// 正常调用方法
communicationClient.getFunction();
 

总结

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

相关文章

  • Servlet实现点击计数器的方法

    Servlet实现点击计数器的方法

    这篇文章主要介绍了Servlet实现点击计数器的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • springboot运行jar生成的日志到指定文件进行管理方式

    springboot运行jar生成的日志到指定文件进行管理方式

    这篇文章主要介绍了springboot运行jar生成的日志到指定文件进行管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • 解决引用jip-common jar包,报401 Unauthorized错误问题

    解决引用jip-common jar包,报401 Unauthorized错误问题

    这篇文章主要介绍了解决引用jip-common jar包,报401 Unauthorized错误问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Java实现二分法变种的示例代码

    Java实现二分法变种的示例代码

    这篇文章主要为大家介绍了Java实现二分法变种的示例代码复,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • java中的空指针异常情况以及解决方案

    java中的空指针异常情况以及解决方案

    这篇文章主要介绍了java中的空指针异常情况以及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 功能强大的TraceId 搭配 ELK使用详解

    功能强大的TraceId 搭配 ELK使用详解

    这篇文章主要为大家介绍了功能强大的TraceId 搭配 ELK使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Java异常学习之自定义异常详解

    Java异常学习之自定义异常详解

    你的程序总有一天会崩溃掉,在崩溃掉的时候我们要知道它在哪,为了什么而崩溃掉,数据的保存或者丢失情况如何等问题。下面这篇文章主要给大家介绍了关于Java异常学习之自定义异常的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-06-06
  • java中List的toArray()方法用法举例

    java中List的toArray()方法用法举例

    这篇文章主要介绍了java中List的toArray()方法的相关资料,toArray()方法可以将List转换为数组,但需要注意其两种形式的区别,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • Java中this,static,final,const用法详解

    Java中this,static,final,const用法详解

    这篇文章主要介绍了Java中this,static,final,const用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • SpringBoot启动原理深入解析

    SpringBoot启动原理深入解析

    我们开发任何一个Spring Boot项目都会用到启动类,下面这篇文章主要给大家介绍了关于SpringBoot启动原理解析的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04

最新评论