SpringBoot使用quartz,注入feignClient,client為null問題
更新時間:2024年11月12日 08:51:56 作者:So Young_
在SpringBoot中使用Quartz和FeignClient時,如果通過@Autowired或構(gòu)造方法注入FeignClient導(dǎo)致為null,可以使用Spring提供的通過文件名獲取bean的方式解決,這種方法在Quartz啟動時通過反射注入類,而類還未初始化好,導(dǎo)致FeignClient為null的問題
SpringBoot使用quartz,注入feignClient,client為null
使用@autowired,活著構(gòu)造方法注入,打斷點查看注入的feigncliet為null, 搜索網(wǎng)上的一些博客,大致原因是因為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); // 正常調(diào)用方法 communicationClient.getFunction();
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot運行jar生成的日志到指定文件進行管理方式
這篇文章主要介紹了springboot運行jar生成的日志到指定文件進行管理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04解決引用jip-common jar包,報401 Unauthorized錯誤問題
這篇文章主要介紹了解決引用jip-common jar包,報401 Unauthorized錯誤問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03Java中this,static,final,const用法詳解
這篇文章主要介紹了Java中this,static,final,const用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07