开发者

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

目录
  • SpringBoot使用quartz,注入feignClient,client为null
    • 使用spring提供的通过文件名获取bean的方式
    • 使用的时候通过类名加载类
  • 总结

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

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

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

    注入进来

    @Component
    public chttp://www.devze.comlass SpringUtil implements Applic编程ationContextAware {
     
        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();
     

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜