有没有办法在 Spring 应用程序中静态/全局请求 ApplicationContext 的副本?
假设主类启动并初始化应用程序上下文,它是否需要通过调用堆栈将其向下传递给任何需要它的类,或者类是否有办法请求先前创建的上下文? (我认为这必须是单身人士?)
原文由 Joe Skora 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有办法在 Spring 应用程序中静态/全局请求 ApplicationContext 的副本?
假设主类启动并初始化应用程序上下文,它是否需要通过调用堆栈将其向下传递给任何需要它的类,或者类是否有办法请求先前创建的上下文? (我认为这必须是单身人士?)
原文由 Joe Skora 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以实施 ApplicationContextAware
或仅使用 @Autowired
:
public class SpringBean {
@Autowired
private ApplicationContext appContext;
}
SpringBean
将注入 ApplicationContext
,在其中实例化这个bean。例如,如果您的 Web 应用程序具有非常标准的上下文层次结构:
main application context <- (child) MVC context
和 SpringBean
在主上下文中声明,它将注入主上下文;否则,如果它是在 MVC 上下文中声明的,它将注入 MVC 上下文。
原文由 omnomnom 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.1k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
如果需要访问容器的对象是容器中的bean,只需实现 BeanFactoryAware 或 ApplicationContextAware 接口即可。
如果容器外的对象需要访问容器,我为 spring 容器使用了 标准的 GoF 单例模式。这样一来,你的应用程序中只有一个单例,其余的都是容器中的单例 bean。