午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

關(guān)于Springboot如何獲取IOC容器

瀏覽:119日期:2023-12-01 18:32:43
目錄Springboot項(xiàng)目中獲取IOC容器的方式方法一(不實(shí)用,不推薦):方法二(強(qiáng)烈推薦):總結(jié)Springboot項(xiàng)目中獲取IOC容器的方式

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

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

在Springboot項(xiàng)目中都會(huì)存在一個(gè)SpringApplication的啟動(dòng)類,我們通過(guò)以下代碼啟動(dòng)IOC容器。

SpringApplication.run(Application.class, args);

其實(shí)run方法會(huì)將創(chuàng)建的IOC容器作為返回值返回,那么我們就可以通過(guò)聲明一個(gè)ApplicationContext對(duì)象來(lái)接收run方法的返回值。

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

但是,使用這種方法會(huì)遇到各種各樣的問(wèn)題,所以我們通常使用第二種方法。

方法二(強(qiáng)烈推薦):

通過(guò)編寫(xiě)實(shí)現(xiàn)了ApplicationContextAware的工具類來(lái)獲取IOC容器,當(dāng)實(shí)現(xiàn)了ApplicationContextAware的類在容器中被初始化和加載后,會(huì)自動(dòng)調(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; } /** * 通過(guò)名字獲取上下文中的bean * @param name * @return */ public static Object getBean(String name){return applicationContext.getBean(name); } /** * 通過(guò)類型獲取上下文中的bean * @param requiredType * @return */ public static Object getBean(Class<?> requiredType){return applicationContext.getBean(requiredType); }}

上面這個(gè)工具類只有在被IOC容器加載完之后才會(huì)調(diào)用setApplicationContext,那么該怎么把工具類放到IOC容器中呢?我們使用@Import注解來(lái)實(shí)現(xiàn),具體使用方法請(qǐng)看下面代碼:

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

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

@Import注解須知:

1.@Import只能用在類上 ,@Import通過(guò)快速導(dǎo)入的方式實(shí)現(xiàn)把實(shí)例加入spring的IOC容器中

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

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注好吧啦網(wǎng)的更多內(nèi)容!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品久久 | 91禁外国网站 | 国产日韩欧美日韩大片 | 污视频网站在线 | 黄色高潮 | av手机| 国产一区二区福利 | 国产精品美女久久 | 亚洲羞羞 | 你懂的在线免费观看 | 久久久久久久久爱 | 免费福利在线视频 | 欧美韩日国产 | 大色综合 | 日韩欧美中文字幕一区二区三区 | 黄色91网站 | 国产三级福利 | 欧美四区| 香蕉在线影院 | 国产精品一区在线 | av网站在线播放 | 日韩经典中文字幕 | 欧美中文字幕 | 日本高清视频网站 | 你懂的网址在线观看 | 久久成人久久 | 午夜天堂在线观看 | 日韩国产一区 | 欧美精品aaa | 特级丰满少妇一级aaaa爱毛片 | 国产精品高清在线观看 | 高清成人综合 | 国产精品婷婷 | 高清亚洲 | 91精品免费 | 亚洲第六页 | 黄色一级视频网站 | 国产在线一区二区 | 国产黄色免费观看 | 亚洲大片在线观看 | 成人激情视频在线观看 |