spring mvc 配置解析之xml
2019独角兽企业重金招聘Python工程师标准>>>
##mvc.xml中可配置的元素##
既然是xml
,当然是要遵循schema
的规定. 那么schema文件在哪呢? 定位方法就是解开这个jar文件,找到META-INF/spring.schema
文件,这是个文本文件,里面包含了namespace
以及其对应的xsd
文件的位置. 由此得出:mvc的schema
是spring-mvc-{version}.xsd
,位于spring-webmvc-{version}.jar
文件的org.springframework.web.servlet.config
包中. 该schema的一级标签有5个(annotation-driven
,resources
,default-servlet-handler
,interceptors
,view-controller
).至于每个element的含义及下属标签的配置,后面有时间在讲,此处跳过.
##解析配置##
前面的文章讲到过spring是如何解析不同namespace的xml文件的.这里我们就以mvc为例再过一遍.
依然是解压jar文件,这次去找META-INF/spring.handlers
,这也是个文本文件.里面告诉我们xml中mvc专属标签的处理是org.springframework.web.servlet.config.MvcNamespaceHandler
干的. 我们看一下这个类:此类中就一个init方法,里面指出了上一章中提到的5个一级标签分别对应的处理器类.
public void init() {registerBeanDefinitionParser("annotation-driven", new AnnotationDrivenBeanDefinitionParser());registerBeanDefinitionParser("default-servlet-handler", new DefaultServletHandlerBeanDefinitionParser());registerBeanDefinitionParser("interceptors", new InterceptorsBeanDefinitionParser());registerBeanDefinitionParser("resources", new ResourcesBeanDefinitionParser());registerBeanDefinitionParser("view-controller", new ViewControllerBeanDefinitionParser());
}
这几个类中就涉及了我们比较熟悉的.HandlerMapping
,HandlerAdapter
,HandlerInterceptor
,HandlerMethodArgumentResolver
等. 处理器中新建了这些类的BeanDefinition
.BeanDefinition
也就包含了默认的properties的设置.比如说默认的拦截器,默认的参数解析器,默认的类型转换器等. 然后把这些BeanDefinition
注册到Bean容器中.
##君在何处##
spring mvc的执行过程是从DispatcherServlet
开始的.这个类在初始化的时候会从bean容器中把上面注册的BeanDefinition
实例化出来,放到类变量里面备用.
protected void initStrategies(ApplicationContext context) {initMultipartResolver(context);initLocaleResolver(context);initThemeResolver(context);initHandlerMappings(context);initHandlerAdapters(context);initHandlerExceptionResolvers(context);initRequestToViewNameTranslator(context);initViewResolvers(context);initFlashMapManager(context);
}
转载于:https://my.oschina.net/huanger/blog/361111
spring mvc 配置解析之xml相关推荐
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...
- Spring MVC配置多个视图解析器(FreeMarker,JSP)
Spring MVC配置多个视图解析器(FreeMarker,JSP) Spring MVC开发过程中,有时候需要多个视图解析器策略来解析视图名称,出现这个情况怎么解决? 通过"order& ...
- spring MVC配置详解
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...
- Spring MVC 配置--解剖
http://blog.csdn.net/ailihx/article/details/1909466 Spring MVC 配置--解剖 分类: Spring 2007-11-30 16:40 54 ...
- java 方式配置ssm,关于SSM以及Spring boot中对于Spring MVC配置的问题
SSM中 Spring MVC配置 传统的web.xml配置 web.xml contextConfigLocation classpath*:applicationContext.xml org.s ...
- Spring MVC 流程图解析
Spring MVC 流程图解析 Spring MVC工作流程图 图一 图二 SpringMVC工作流程描述 DispatcherServlet,HandlerMapping,HandlerExec ...
- SpringMVC基础--spring MVC配置详解
牧涛 --<-<-<@态度决定一切→_→... 博客园 首页 新闻 新随笔 联系 管理 订阅 随笔- 171 文章- 3 评论- 79 spring MVC配置详解 现在主流的 ...
- [Spring mvc 深度解析(三)] 创建Spring MVC之器
第9章 创建Spring MVC之器 本章将分析Spring MVC自身的创建过程.首先分析Spring MVC的整体结构,然后具体分析每一层的创建过程. 1 整体结构介绍 Spring MVC中 ...
- spring MVC RequestMappingHandlerMapping解析
spring MVC RequestMappingHandlerMapping解析 getHandler(HttpServletRequest request) 在doDispatch(HttpSer ...
最新文章
- AfxBeginThread的介绍/基本用法和Window多线程使用详解
- 事件标志组的等待与通知
- EXCEL的下拉列表
- mysqlsql怎么比较当前月与去年的这个月的同比_多数房企前10月业绩稳步增长 这12家企业为何“负增长”?...
- Python GIL
- 《数据库设计入门经典》读书笔记——第二章:工作场所中的数据库建模
- pulsar基础(六)——namespace的基本操作
- android上传图片失败问题
- [Project Euler] 来做欧拉项目练习题吧: 题目005
- python界面登录程序_python的基础程序——简陋的管理员(用户)登录界面
- 词霸天下---177 词根 【 -vast- = -wast- 空,荒废 】仅供学习使用
- 【计算机网络】计算机网络总结
- python pdf 加水印_Python中通过PyPDF2实现PDF添加水印
- 资讯App排行榜出炉,凤凰新闻客户端如何成了行业变量?
- 配置汇编环境(王爽)
- nova读取配置文件流程
- oracle查看主备库延迟时间,【分享】Oracle 主备库容灾维护常用的九个SQL
- c#获取串口列表(可用于实现实时监控串口)
- (1)OCR学习-相关知识
- cropping IplImage most effectively
热门文章
- C++:48---纯虚函数
- MachineLearning(2)-图像分类常用数据集
- Java中int[]与Integer[]相互转化的方法
- 《Java8实战》笔记(16):结论以及Java的未来
- 搭建基于飞桨的OCR工具库,总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别的PaddleOCR
- InputStream 类型
- C语言 返回指针的函数--指针函数 int* max(int a)
- 研究显示每天工作超8小时得心脏病概率增加80%,生命很重要,工作不要那个累。
- 三星“打法”:先模仿对手 再吃掉对手
- 利用qt和ffmpeg软件来制作视频裁剪工具