日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

獲取spring的ApplicationContext幾種方式【轉】

 liang1234_ 2020-03-25

轉自:http://blog.sina.com.cn/s/blog_9c7ba64d0101evar.html

Java類獲取spring 容器的bean

常用的5種獲取spring 中bean的方式總結:

方法一:在初始化時保存ApplicationContext對象

代碼:

1 ApplicationContext ac = new FileSystemXmlApplicationContext('applicationContext.xml'); 2 ac.getBean('beanId');

說明:這種方式適用于采用Spring框架的獨立應用程序,需要程序通過配置文件手工初始化Spring的情況。

方法二:通過Spring提供的工具類獲取ApplicationContext對象
代碼:

復制代碼
1 import org.springframework.web.context.support.WebApplicationContextUtils;
2 ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
3 ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
4 ac1.getBean('beanId');
5 ac2.getBean('beanId');
復制代碼

說明:這種方式適合于采用Spring框架的B/S系統(tǒng),通過ServletContext對象獲取ApplicationContext對象,然后在通過它獲取需要的類實例。

上面兩個工具方式的區(qū)別是,前者在獲取失敗時拋出異常,后者返回null。

方法三:繼承自抽象類ApplicationObjectSupport
說明:抽象類ApplicationObjectSupport提供getApplicationContext()方法,可以方便的獲取到ApplicationContext。
Spring初始化時,會通過該抽象類的setApplicationContext(ApplicationContext context)方法將ApplicationContext 對象注入。

方法四:繼承自抽象類WebApplicationObjectSupport
說明:類似上面方法,調用getWebApplicationContext()獲取WebApplicationContext

方法五:實現(xiàn)接口ApplicationContextAware
說明:實現(xiàn)該接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 對象。
Spring初始化時,會通過該方法將ApplicationContext對象注入。

雖 然,spring提供了后三種方法可以實現(xiàn)在普通的類中繼承或實現(xiàn)相應的類或接口來獲取spring 的ApplicationContext對象,但是在使用是一定要注意實現(xiàn)了這些類或接口的普通java類一定要在Spring 的配置文件application-context.xml文件中進行配置。否則獲取的ApplicationContext對象將為null。



如下是我實現(xiàn)了ApplicationContextAware接口的例子

復制代碼
1 package quartz.util; 2 3 import org.springframework.beans.BeansException; 4 import org.springframework.context.ApplicationContext; 5 import org.springframework.context.ApplicationContextAware; 6 7 public class SpringConfigTool implements ApplicationContextAware{//extends ApplicationObjectSupport{ 8 9 private static ApplicationContext context = null; 10 private static SpringConfigTool stools = null; 11 public synchronized static SpringConfigTool init(){ 12 if(stools == null){ 13 stools = new SpringConfigTool(); 14 } 15 return stools; 16 } 17 18 public void setApplicationContext(ApplicationContext applicationContext) 19 throws BeansException { 20 context = applicationContext; 21 } 22 23 public synchronized static Object getBean(String beanName) { 24 return context.getBean(beanName); 25 } 26 27 }
復制代碼

XML文件中的配置信息

最后提供一種不依賴于servlet,不需要注入的方式
注意一點,在服務器啟動時,Spring容器初始化時,不能通過以下方法獲取Spring 容器,如需細節(jié)可以觀看源碼

復制代碼
1 org.springframework.web.context.ContextLoader
2 
3 Title1 import org.springframework.web.context.ContextLoader; 
4 import org.springframework.web.context.WebApplicationContext; 
5  
6 WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); 
7   wac.getBean(beanID);
復制代碼

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多