繁体   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