Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么设置导致ContextLoaderListener';s(根上下文)作为';家长';DispatcherServlet上的上下文';什么是背景?_Java_Spring_Rest_Spring Mvc_Servlets - Fatal编程技术网

Java 什么设置导致ContextLoaderListener';s(根上下文)作为';家长';DispatcherServlet上的上下文';什么是背景?

Java 什么设置导致ContextLoaderListener';s(根上下文)作为';家长';DispatcherServlet上的上下文';什么是背景?,java,spring,rest,spring-mvc,servlets,Java,Spring,Rest,Spring Mvc,Servlets,首先,我想知道如何将ContextLoaderListener的应用程序上下文中的服务层级别bean自动连接/注入DispatcherServlet上下文中的bean 让我们假设,对于一个随机的简单情况,需要在实际资源/控制器级别将PuppyService自动连接/注入PuppyResource。Puppy服务以及Puppy存储库和任何Puppy实体将从@Configuration类自动加载到root/ContextLoaderListener的上下文中,该@Configuration类在其他包

首先,我想知道如何将ContextLoaderListener的应用程序上下文中的服务层级别bean自动连接/注入DispatcherServlet上下文中的bean

让我们假设,对于一个随机的简单情况,需要在实际资源/控制器级别将PuppyService自动连接/注入PuppyResource。Puppy服务以及Puppy存储库和任何Puppy实体将从@Configuration类自动加载到root/ContextLoaderListener的上下文中,该@Configuration类在其他包中执行组件扫描,以获取bean并加载它们

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

从我刚刚读到的内容,现在希望能够理解,根上下文实际上是DispatcherServlet创建的上下文的“父”上下文。这意味着,根上下文中的bean实际上可以自动连接/注入到DispatcherServlet创建的上下文中的任何bean中。我实际上刚刚了解了“嵌套”上下文的概念。这准确吗

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


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

该行为已内置于系统中。javadoc定义了根应用程序上下文

仅由
ContextLoaderListener
加载的根应用程序上下文, 如果有,将共享

美国的javadoc也表示

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

假设你使用

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

您将自动获得此行为

同样来自javadoc

此构造函数在Servlet 3.0+环境中非常有用,其中 基于实例的servlet注册可以通过
ServletContext.addServlet(java.lang.String,java.lang.String)
API


这是常用的设置Spring MVC应用程序的方法。

该行为内置于。javadoc定义了根应用程序上下文

仅由
ContextLoaderListener
加载的根应用程序上下文, 如果有,将共享

美国的javadoc也表示

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

假设你使用

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

您将自动获得此行为

同样来自javadoc

此构造函数在Servlet 3.0+环境中非常有用,其中 基于实例的servlet注册可以通过
ServletContext.addServlet(java.lang.String,java.lang.String)
API

这就是常见的设置SpringMVC应用程序的方法