您好,登錄后才能下訂單哦!
這篇文章主要介紹“Springboot怎么獲取IOC容器”,在日常操作中,相信很多人在Springboot怎么獲取IOC容器問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Springboot怎么獲取IOC容器”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Springboot項目中獲取IOC容器的方式
方法一(不實用,不推薦):
方法二(強烈推薦):
在Springboot項目中如果要獲取IOC容器目前有兩種方法。
在Springboot項目中都會存在一個SpringApplication的啟動類,我們通過以下代碼啟動IOC容器。
SpringApplication.run(Application.class, args);
其實run方法會將創(chuàng)建的IOC容器作為返回值返回,那么我們就可以通過聲明一個ApplicationContext對象來接收run方法的返回值。
public class SpringApplication { public static void main(String[] args) { ApplicationContext applicationContext = SpringApplication.run(Application.class, args); Object startSerive = applicationContext.getBean("startSerive"); } }
但是,使用這種方法會遇到各種各樣的問題,所以我們通常使用第二種方法。
通過編寫實現(xiàn)了ApplicationContextAware
的工具類來獲取IOC容器,當實現(xiàn)了ApplicationContextAware
的類在容器中被初始化和加載后,會自動調(diào)用ApplicationContextAware
中的setApplicationContext
方法,將IOC容器傳入setApplicationContext
方法的形參中。
以下是用于獲取IOC容器的工具類:
public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; public SpringContextUtil() { } /** * 設(shè)置上下文 * @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容器加載完之后才會調(diào)用setApplicationContext,那么該怎么把工具類放到IOC容器中呢?我們使用@Import注解來實現(xiàn),具體使用方法請看下面代碼:
@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通過快速導入的方式實現(xiàn)把實例加入spring的IOC容器中
2.加入IOC容器的方式有很多種,@Import注解可以用于導入第三方包 ,當然@Bean注解也可以,但是@Import注解快速導入的方式更加便捷
到此,關(guān)于“Springboot怎么獲取IOC容器”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。