溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Springboot怎么獲取IOC容器

發布時間:2021-08-16 09:31:29 來源:億速云 閱讀:560 作者:chen 欄目:開發技術

這篇文章主要介紹“Springboot怎么獲取IOC容器”,在日常操作中,相信很多人在Springboot怎么獲取IOC容器問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Springboot怎么獲取IOC容器”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目錄
  • Springboot項目中獲取IOC容器的方式

    • 方法一(不實用,不推薦):

    • 方法二(強烈推薦):


Springboot項目中獲取IOC容器的方式

在Springboot項目中如果要獲取IOC容器目前有兩種方法。

方法一(不實用,不推薦):

在Springboot項目中都會存在一個SpringApplication的啟動類,我們通過以下代碼啟動IOC容器。

SpringApplication.run(Application.class, args);

其實run方法會將創建的IOC容器作為返回值返回,那么我們就可以通過聲明一個ApplicationContext對象來接收run方法的返回值。

public class SpringApplication {
    public static void main(String[] args) {
        ApplicationContext applicationContext = SpringApplication.run(Application.class, args);
        Object startSerive = applicationContext.getBean("startSerive");
    }
}

但是,使用這種方法會遇到各種各樣的問題,所以我們通常使用第二種方法。

方法二(強烈推薦):

通過編寫實現了ApplicationContextAware的工具類來獲取IOC容器,當實現了ApplicationContextAware的類在容器中被初始化和加載后,會自動調用ApplicationContextAware中的setApplicationContext方法,將IOC容器傳入setApplicationContext方法的形參中。

以下是用于獲取IOC容器的工具類:

public class SpringContextUtil implements ApplicationContextAware {
    private static ApplicationContext applicationContext;
    public SpringContextUtil() {
    }
    /**
     * 設置上下文
     * @param applicationContext
     * @throws BeansException
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (SpringContextUtil.applicationContext == null) {
            SpringContextUtil.applicationContext = applicationContext;
        }
    }
    /**
     * 獲取上下文
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
    /**
     * 通過名字獲取上下文中的bean
     * @param name
     * @return
     */
    public static Object getBean(String name){
        return applicationContext.getBean(name);
    }
    /**
     * 通過類型獲取上下文中的bean
     * @param requiredType
     * @return
     */
    public static Object getBean(Class<?> requiredType){
        return applicationContext.getBean(requiredType);
    }
}

上面這個工具類只有在被IOC容器加載完之后才會調用setApplicationContext,那么該怎么把工具類放到IOC容器中呢?我們使用@Import注解來實現,具體使用方法請看下面代碼:

@SpringBootApplication
@Import({SpringContextUtil.class})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

注:不使用@Import也是可以的,例如在SpringContextUtil類上面標注@Component等類似的注解也是可以的。

@Import注解須知:

1.@Import只能用在類上 ,@Import通過快速導入的方式實現把實例加入spring的IOC容器中

2.加入IOC容器的方式有很多種,@Import注解可以用于導入第三方包 ,當然@Bean注解也可以,但是@Import注解快速導入的方式更加便捷

到此,關于“Springboot怎么獲取IOC容器”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女