簡體   English   中英

應用程序中的每個類應如何檢索Spring應用程序上下文?

[英]How should each class in an application retrieve the Spring application context?

應用程序中的每個類應如何檢索Spring應用程序上下文? 或者,換句話說,應用程序應該調用幾次new ClassPathXmlApplicationContext("applicationContext.xml")

通常,一個類不需要應用程序上下文,但是需要Spring注入的一些對象。 這是在那個applicationContext中配置的。

因此,應用程序通常僅調用一次new ClassPathXmlApplicationContext("applicationContext.xml")

通常,使用依賴注入時,您不必一定要這樣做。 但是,如果您的班級確實需要了解應用程序上下文,請實現ApplicationContextAware接口。 Spring將自動調用該接口中定義的setApplicationContext方法,以為您的類提供應用程序上下文。

請注意,如果嘗試訪問文件系統資源,則應使用ResourceLoaderAware 如果要訪問消息源,則不要實現接口; 相反,注入對MessageSource bean的引用。

我認為您應該從此處回答其他問題的建議中獲取建議。 實現ApplicationContextAware或ServletContextAware(如果您在Servlet容器中)是獲取上下文的最佳方法。

查找spring如何處理依賴注入或控制反轉。

一旦。

實際上,您應該讓Spring承擔繁重的工作並構建/配置類,而不是相反。

整個想法是,可以構建所有類,而不必調用外部世界的依賴關系,而依賴關系是由Spring框架“神奇地”提供的。

發明這種方法是為了擺脫您所暗示的ServiceLocator模式,即獲得對對象的引用以獲取所需的依賴關系,例如JNDI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM