获取 Spring 应用上下文

新手上路,请多包涵

有没有办法在 Spring 应用程序中静态/全局请求 ApplicationContext 的副本?

假设主类启动并初始化应用程序上下文,它是否需要通过调用堆栈将其向下传递给任何需要它的类,或者类是否有办法请求先前创建的上下文? (我认为这必须是单身人士?)

原文由 Joe Skora 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 558
2 个回答

如果需要访问容器的对象是容器中的bean,只需实现 BeanFactoryAwareApplicationContextAware 接口即可。

如果容器外的对象需要访问容器,我为 spring 容器使用了 标准的 GoF 单例模式。这样一来,你的应用程序中只有一个单例,其余的都是容器中的单例 bean。

原文由 Don Kirkby 发布,翻译遵循 CC BY-SA 2.5 许可协议

您可以实施 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题