我有一个 ApplicationContextProvider 类,它可以用来从不受 Spring 管理的 bean 访问 Spring ApplicationContext。像提到的东西 here
但是对于 spring 管理的 bean,我可以让它们成为 ApplicationContextAware,这样它们就可以访问 ApplicationContext。
我的问题是,使用通用的 ApplicationContextProvider 从 spring 管理的 bean 获取 spring 应用程序上下文是个好主意还是我应该继续使用 ApplicationContextAware?
最佳答案
使用静态引用应用程序上下文的单例是自找麻烦。在任何情况下使用这样的实用程序类几乎都不是一个好主意。在处理遗留 Web 应用程序时使用 WebApplicationContextUtils
相反。
在从 EJB 2.1 迁移到 Spring 的过程中,我曾经在一个项目中重新发明了这个解决方案 - 但在迁移之后我们摆脱了它并且可以再次休眠。
回到您的问题 - 对 Spring 托管 beans 使用这样的实用程序完全没有意义。老实说,我也很少需要 ApplicationContextAware
接口(interface)。 Spring 应该注入(inject)依赖项,你不应该一直向 Spring 请求它们!
当您需要引用的实用程序类(托管 bean 和非托管 bean)时,您能向我们展示一些用例吗?看来您拒绝接受 Spring 为您提供的支持。
关于java - 有一个通用的 Spring ApplicationContextProvider 供所有 spring 管理的 bean 和其他 bean 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878224/