首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么设置导致ContextLoaderListener(根上下文)成为DispatcherServlet上下文的“父”上下文?

什么设置导致ContextLoaderListener(根上下文)成为DispatcherServlet上下文的“父”上下文?
EN

Stack Overflow用户
提问于 2017-03-10 15:41:46
回答 1查看 562关注 0票数 1

首先,我想知道如何将ContextLoaderListener的应用程序上下文中的服务层级bean从DispatcherServlet上下文中注入到bean中。

假设在一个随机的简单情况下,PuppyService需要在实际的资源/控制器级别上自动注入/注入到PuppyResource中。Puppy、Puppy和任何Puppy实体都是bean,它们将自动加载到根/ContextLoaderListener的上下文中,由@ContextLoaderListener从@ContextLoaderListener类中进行组件扫描,以获取bean并加载它们.

同时,Puppy资源将更多地放在webMvc级别上,并加载到DispatcherServlet的上下文中。

根据我刚才所读到的,并且现在希望理解的是,根上下文实际上是DispatcherServlet创建的上下文的“父”上下文。这意味着根上下文中的bean实际上可以被自动/注入到由DispatcherServlet创建的上下文中的任何bean中。我刚刚从字面上了解了“嵌套”上下文的概念。这个准确吗?

如果这是准确的,那么配置在哪里被设置为使根上下文成为“父”上下文?目前,当我配置servlet/listener时,我通过WebApplicationInitializer的自定义实现来实现它,其中我只需创建两个上下文,分别将它们分别加载到一个DispatcherServlet实例和一个ContextLoaderListener实例中,然后分别将它们分别注册到servlet中。我猜在其中某个地方,ContextLoaderListener的应用程序上下文会自动设置为“父”。

有人能简单解释一下吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-10 16:17:35

行为是内置在DispatcherServlet中的。javadoc定义根应用程序上下文。

只有ContextLoaderListener加载的根应用程序上下文(如果有的话)才会被共享。

ContextLoaderListener的javadoc还声明

引导侦听器启动并关闭Spring的根WebApplicationContext

假设你使用了WebApplicationContext

如果给定的上下文还没有父上下文,则根应用程序上下文将被设置为父

你会自动得到这种行为。

同样来自javadoc,

这个构造函数在Servlet 3.0+环境中很有用,在这种环境中,可以通过Servlet API注册基于实例的Servlet。

这就是普通的AbstractDispatcherServletInitializer用来设置Spring应用程序的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42722299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档