ApplicationContextAware快速擷取bean

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.