根上下文
Spring应用程序中的根上下文
ApplicationContext是由加载的
ContextLoaderListener。此上下文应具有全球可用的资源,例如服务,存储库,基础结构bean(
DataSource,
EntityManagerFactorys等)等。
该
ContextLoaderListener注册此背景下的
ServletContext名下
org.springframework.web.context.WebApplicationContext.ROOT。
如果您ApplicationContext
自己加载并在中使用上述名称注册ServletContext
,则将其视为根上下文。
子语境
Spring应用程序中的子上下文
ApplicationContext是由
DispatcherServlet(或例如
MessageDispatcherServletSpring-
WS应用程序中的)加载的。对于Spring
MVC,此上下文应仅包含与该上下文相关的bean,例如
ViewResolvers,
HandlerMappings等。
Servlet将这个上下文以
ServletContext名称注册在中
org.springframework.web.servlet.frameworkServlet.CONTEXT.<servlet-name>。
根<子关系
只有子上下文可以访问父上下文,因为您可以拥有多个子上下文。例如,在结合了Spring WS应用程序的Spring
MVC中。子级通过在父级上下文中找到
ServletContext众所周知的名称来检测父级上下文。
如果根上下文可以访问该子项,它将使用哪个来关联bean?如果是这种情况,那么接下来,当涉及AOP时,您还将得到令人惊讶的结果。在子上下文中定义的AOP会突然影响在根上下文中配置的Bean。



