拥有一个通用的SpringApplicationContextProvider,可供所有受Spring管理和其他非受Spring管理的bean使用。

3
我有一个ApplicationContextProvider类,可以用于从未由Spring管理的bean中访问Spring ApplicationContext。类似于此处提到的here
对于由Spring管理的bean,我可以使它们成为ApplicationContextAware,以便它们可以访问ApplicationContext。
我的问题是,是否应该继续使用ApplicationContextAware,还是使用常见的ApplicationContextProvider来从由Spring管理的bean获取Spring应用程序上下文?
1个回答

2
使用具有对应用程序上下文的静态引用的单例会引发问题。在任何情况下使用此类实用程序类都几乎从来不是一个好主意。处理遗留 Web 应用程序时,请改用 WebApplicationContextUtils
我曾经在从 EJB 2.1 迁移到 Spring 的项目中重新发明了这个解决方案,但是在迁移后,我们摆脱了它,又可以安心睡觉了。
回到您的问题 - 对于 Spring 管理的 bean 使用这样的工具根本没有意义。说实话,我很少需要 ApplicationContextAware 接口。Spring 应该注入依赖项,你不应该一直向 Spring 请求它们!
您能展示一些需要引用此实用程序类(对于管理和非管理的 bean)的用例吗?看起来您拒绝接受 Spring 给您的支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接