3

我有一个 ApplicationContextProvider 类,它可以用来从不受 Spring 管理的 bean 访问 Spring ApplicationContext。像这里提到的东西

但是对于 Spring 托管的 bean,我可以让它们成为 ApplicationContextAware,这样它们就可以访问 ApplicationContext。

我的问题是,使用常见的 ApplicationContextProvider 从 spring 管理的 bean 获取 spring 应用程序上下文是一个好主意,还是应该继续使用 ApplicationContextAware?

4

1 回答 1

2

使用对应用程序上下文进行静态引用的单例是自找麻烦。在任何情况下使用这样的实用程序类几乎都不是一个好主意。在处理遗留 Web 应用程序时,请WebApplicationContextUtils改用。

在从 EJB 2.1 迁移到 Spring 的过程中,我曾经在一个项目中重新发明了这个解决方案——但是在迁移之后,我们摆脱了它并且可以再次休眠。

回到您的问题 - 将此类实用程序用于 Spring托管bean 完全没有意义。老实说,我也很少需要ApplicationContextAware接口。Spring 应该注入依赖项,你不应该一直向 Spring 询问它们!

当您需要引用的实用程序类(托管和非托管 bean)时,您能否向我们展示一些用例?看起来您拒绝接受 Spring 为您提供的支持。

于 2012-06-04T16:10:07.023 回答