[英]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.