java學習——springboot動態獲得javaBean,手動注入Bean
阿新 • • 發佈:2019-02-06
一般來說,我們使用springboot都會用@AutoWired自動注入Bean物件,但是有些情況下,@AutoWired無法滿足我們,比如執行緒中,或者動態例項化多個類中的一個物件時。在前段時間做專案時,就遇到這個問題,有多個mybatis的mapper介面,我們需要根據哪個表更新了資料,然後操作對應的mapper獲取資料。
下面上程式碼:
public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringContextUtil.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() { return applicationContext; } public static Object getBean(String beanId) throws BeansException { return applicationContext.getBean(beanId); } }
程式碼就不過多的解釋,要執行這個程式碼,你需要在springboot的主方法那裡使用回撥函式獲取上下文物件,這樣才能動態注入Bean。
動態注入Bean:
//根據beam名稱動態載入bean
MssqlServiceInterface mssqlServiceInterface = (MssqlServiceInterface)SpringContextUtil.getBean(mapperServiceBeanName);
Bean類:
需要在箭頭處寫上Bean名稱,這樣才知道你想注入的是什麼類。