博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring和springMVC父子容器的关系
阅读量:7245 次
发布时间:2019-06-29

本文共 1253 字,大约阅读时间需要 4 分钟。

部分转载自:https://www.cnblogs.com/ljdblog/p/7461854.html

 

为什么一定要在web.xml中配置spring的listener呢?

spring监听器
org.springframework.web.context.ContextLoaderListener

本身我们都知道,这个listener是告诉容器,启动的时候创建spring容器,并加载我们在context-param中配置的contextConfigLocation对应的配置文件的bean。

那么这一步是必须的吗?如果把这个listener注释掉,发现启动项目后报错。

原因:springMVC容器中的bean使用到spring容器中的bean。如果两个容器之间的bean没有关联,则不会报错。

可以在spring-mvc.xml中import spring.xml,发现启动就不会报错

结语:使用spring容器的目的,我认为就是为了区分哪些bean是可以脱离web环境使用的。

注:springmvc的容器创建是在DispatchServlet初始化时创建的。

----------------------------------------------------------------------------------------------------------------------------------------------

Spring和springMVC父子容器的关系

逻辑分析可知:

1,Spring容器的启动是先于SpringMVC容器的,所以spring容器是不知道springMVC容器的存在的。也就是说父容器无法使用子容器的bean。

2,当父容器初始化好之后,会将自己放到servletcontext的属性中:

servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);

那么,子容器在初始化时,就能得到父容器的存在。子容器可以使用父容器的bean。

 

为什么Controller注册在父容器中,<mvc:annotation-driver/>注册在子容器中时,springMVC无法处理请求呢?

答:RequestMappingHandleMapping在找controller时,默认是不会从父容器中找的。所以我们可以手动的配置它从父容器找。但是这样针对特定的HandlerMapping配置不好。

可以配置controller使用子容器装载。这样既分工明确,又可以免于配置。

 

 

转载于:https://www.cnblogs.com/webyyq/p/8762804.html

你可能感兴趣的文章
微软职位内部推荐-Sr SDE for Win Apps Ecosystem
查看>>
js唤醒手机APP
查看>>
Python常用模块之sys
查看>>
Python基础8_线程-
查看>>
[转载]使用mpvue搭建一个初始小程序
查看>>
html元素英文含义
查看>>
mysql 原理 ~ 线程与IO
查看>>
《Linux内核设计与实现》读书笔记(十四)- 块I/O层
查看>>
php总结二篇
查看>>
vue 开发系列(七) 路由配置
查看>>
英特尔® 图形性能分析器 2019 R1 版本
查看>>
Developing avb
查看>>
Virtualbox中的Linux:未能加载虚拟光驱 VBoxsGuestAdditions.iso到虚拟电脑
查看>>
linux 本地账号密码无法登陆(shell可以登录),一直返回 登陆的login界面
查看>>
使用oracle来计算方差及标准差
查看>>
ORACLE备份、恢复、常用查询
查看>>
矩阵翻硬币 蓝桥杯
查看>>
启动和停止数据库——启动例程并打开数据库
查看>>
模板模式讲解二
查看>>
core.async中go的作用研究
查看>>