有没有办法在 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 许可协议
4 回答1.3k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答731 阅读✓ 已解决
2 回答648 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
如果需要访问容器的对象是容器中的bean,只需实现 BeanFactoryAware 或 ApplicationContextAware 接口即可。
如果容器外的对象需要访问容器,我为 spring 容器使用了 标准的 GoF 单例模式。这样一来,你的应用程序中只有一个单例,其余的都是容器中的单例 bean。