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 ...
最新文章
- 怎么使一个浮点数删除小数部分C语言,如何得出一个浮点数的小数部分,要把各个位保存到一个数组里边。...
- 原来程序员在某个圈子还是蛮吃香的嘛~
- fiddler抓取https请求
- CSS导入使用及引用的两种方法
- 新零售:从上云到云原生 Serverless
- SQL基础语句(详解版)
- php获取数据库的表名和字段名
- Linux常用命令大全(归类)
- PRICAI 2016 论文精选 | 基于车辆优先级优化交通系统的道路分布
- html中rowspan设置动态值_大众标准里机器人程序中P值的设置存在那里?
- EJB到底是什么?(通俗易懂白话文)
- 【今日头条测试开发笔试】部分题目总结
- 【每日随笔】飞书云文档使用 ( 注册飞书云文档账号 | 创建云文档 | 分享云文档 )
- 05—JDBC(2)
- php pandoc,搭建Pandoc+Markdown写作环境
- 睡后收入:小白的自动赚钱神器
- sql中用EXISTS替代IN、用NOT EXISTS替代NOT IN显著变化
- Django 学习小组:基于类的通用视图详解(一)
- 1094:与7无关的数
- vs试用期延长期到期_VS2017试用期到期后登录微软账户出现错误解决方法