1. 程式人生 > >java學習——springboot動態獲得javaBean,手動注入Bean

java學習——springboot動態獲得javaBean,手動注入Bean

一般來說,我們使用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名稱,這樣才知道你想注入的是什麼類。