我有一个ApplicationContextProvider类,它可以用来从不受Spring管理的bean访问Spring ApplicationContext。提到here
之类的东西对于spring managed beans,我可以将它们设为ApplicationContextAware,这样他们就可以访问ApplicationContext。
我的问题是,使用常见的ApplicationContextProvider从spring-managed bean获取spring应用程序上下文是否是一个好主意,还是应该继续使用ApplicationContextAware?
答案 0 :(得分:2)
使用带有静态引用应用程序上下文的单例会遇到麻烦。在任何情况下使用这样的实用程序类几乎都不是一个好主意。处理旧版Web应用程序时,请使用WebApplicationContextUtils
。
我曾经在从EJB 2.1迁移到Spring的过程中在项目中重新设计了这个解决方案 - 但是在迁移之后我们摆脱它并且可以再次入睡。
回到你的问题 - 使用Spring 托管的 bean这样的实用程序根本就没有意义。说实话,我也很少需要ApplicationContextAware
接口。 Spring假设注入依赖项,你不应该一直向Spring询问它们!
当您需要引用的实用程序类(对于托管和非托管bean)时,是否可以向我们展示一些用例?看起来你拒绝接受Spring给你的支持。