java - 有一个通用的 Spring ApplicationContextProvider 供所有 spring 管理的 bean 和其他 bean 使用

标签 java spring

我有一个 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/

相关文章:

c# - Web Application,走哪条路?

java - Spring只读事务锁定表

java - Spring 应用程序最简单的 main() 方法是什么?

java Querydsl BooleanBuilder OneToMany 查询

java - 如何通过位操作反转 View 的可见性

java - 将 Eclipse 作为调试器启动

java - 使用PagerAdapter处理每页多个Fragment

java - 如何用单一方法获得多用途结果?

spring - 从测试上下文中排除类

spring - 谁能比较 Google Guice 和 Spring DI?