gpt4 book ai didi

java - 如何使在全局 applicationContext 的 Spring-MVC 应用程序中创建的 2 个 applicationContexts

转载 作者:行者123 更新时间:2023-11-30 11:56:54 26 4
gpt4 key购买 nike

我有 3 个应用上下文:

  • 负责启动 Jetty servlet 容器的全局上下文,从 main() 启动
  • jetty 中每个 webapp 的 applicationContext 父级(由 SpringSecurity 启动
  • 每个 webapp 的 n xyz-servlet 上下文(我运行 1 个 webapp)

Spring 设法为后两个上下文创建父子关系。

现在我想将一个简单的全局属性服务添加到第一个上下文并让它对其他上下文可见(我可以将它添加到 applicationContext,但我可能稍后会在 webapp 上下文之外的其他地方使用它并想为此做计划).

因为我没有管理其他两个上下文的创建(它们是由从 web.xml 启动的调度程序 servlet 和 spring security 创建的)我不清楚我应该如何以及在哪里访问它们来定义第一个作为父级(好吧,只有 applicationContext 应该将全局上下文作为其父级)。

最佳答案

(1) 和 (2) 之间的父子关系可以通过 web.xml 中的 ContextLoaderListener 进行管理。

具体来说,看看 javadoc for ContextLoader.loadParentContext() .这记录了 ContextLoaderListener 如何找到上下文 (1)。它假定此全局上下文是通过 ContextSingletonBeanFactoryLocator 初始化的,您可能已经或可能没有使用它来创建该上下文。

如果您确实使用了ContextSingletonBeanFactoryLocator,那么它应该很简单,只需按照 javadoc 中的说明操作即可。如果您使用其他方式引导全局上下文,那么您可以子类化 ContextLoaderListener,覆盖 loadParentContext() 方法来定位您的全局上下文,然后在 中使用它>web.xml 而不是标准的 ContextLoaderListener

关于java - 如何使在全局 applicationContext 的 Spring-MVC 应用程序中创建的 2 个 applicationContexts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4130746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com