標籤:beans 服務 bean string throw 在伺服器 配置 預設 負載檔案
ApplicationContext的BeanFactory 的子類, 擁有更強大的功能,ApplicationContext可以在伺服器啟動的時候自動執行個體化所有的bean,而 BeanFactory只有在調用getBean()的時候才去執行個體化那個bean, 這也是我們為什麼要得到一個ApplicationContext對象, 事實上Spring2相關的web應用預設使用的是ApplicationContext對象去執行個體化bean, 換一句話說, 在伺服器啟動的時候,Spring容器就已經執行個體化好了一個ApplicationContext對象,所以我們要在老的代碼裡嘗試去擷取這個對象。 但是如何才能得到一個ApplicationContext對象呢?方法很多,最常用的辦法就是用ClassPathXmlApplicationContext, FileSystemClassPathXmlApplicationContext, FileSystemXmlApplicationContext 等對象去載入Spring設定檔,這樣做也是可以, 但是在載入Spring設定檔的時候,就會產生一個新的ApplicaitonContext對象而不是Spring容器幫我們產生的哪一個, 這樣就產生了冗餘, 所以我們在這裡不採用這種負載檔案的方式,我們使用ApplicationContextAware讓Spring容器傳遞自己產生的ApplicationContext給我們, 然後我們把這個ApplicationContext設定成一個類的靜態變數, 這樣我們就隨時都可以在老的代碼裡得到Application的對象了。(此段說明轉自:http://blog.csdn.net/kouwoo/article/details/43405109)
@Componentpublic class SpringUtils implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext arg0) throws BeansException {applicationContext = arg0;}public static Object getObject(String id) {Object object = null; object = applicationContext.getBean(id); return object;}}
ApplicationContextAware快速擷取bean