spring mvc 配置解析之xml

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

##mvc.xml中可配置的元素##

既然是xml,当然是要遵循schema的规定. 那么schema文件在哪呢? 定位方法就是解开这个jar文件,找到META-INF/spring.schema文件,这是个文本文件,里面包含了namespace以及其对应的xsd文件的位置. 由此得出:mvc的schemaspring-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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDBC学习笔记——事务、存储过程以及批量处理

2019独角兽企业重金招聘Python工程师标准>>> 1、事务 1.1、事务的基本概念和使用示例 数据库事务,是指作为单个逻辑工作单元执行的一系列操作,要么完整…

验证码识别笔记(二)

这是验证码识别的第二篇,先看一下样图吧,就是下面那张。 看到这张图片,直观上就知道比第一篇中的要简单,这个“简单”用语言来描述,可以得到下面的几条结论: 1. 图片中的字符边界比较清晰,并且单…

centos6.5下搭建oracle 11g

为什么80%的码农都做不了架构师?>>> 安装依赖 yum install binutils compat-libstdc-33 compat-libstdc-33.i686 \ elfutils-libelf elfutils-libelf-devel gcc gcc-c glibc glibc.i686 \ glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh…

JS 学习笔记--11---内置对象(Global/Math)

练习中使用的浏览器是IE10,如果各位朋友有不同意见或者遇到浏览器不兼容问题,希望指正 1、内置对象的定义:有ECMAScript实现提供的、不依赖与宿主环境的对象,在ECMAScript运行之前就已经创建好的对象就叫做内置对象。就是说&…

SQL Server 视图设计器

SQL Server 中经常需要写一些查询,关联好多张表,显示无数个列。如果使用视图设计器,可以大大提高效率,同是减少差错。1. 启动视图设计器为数据库“新建视图”,将启用视图设计器。2. 添加表在起始界面,将出现…

misc类设备驱动1——板载蜂鸣器驱动测试

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、驱动部分 1、前言 九鼎移植的内核已经提供了蜂鸣器驱动源码(在SI中搜索关键字buzzer,发现出现有x210-buzzer.c文件;或者在make menuconfig界面搜索buzzer&am…

github和git@osc提交问题

为什么80%的码农都做不了架构师?>>> 今天想用gitosc push下测试下自己能否正常使用gitosc的git仓库的,公钥SSH 已经加好。 ssh -T gitgit.oschina.net 测试正常。 结果报错could not read Username for https://git.oschina.net: No such fi…

怎样跟踪来访用户?

某些监视方法是比较容易想到的,比如,当你登录网站的时候,它就可以知道你是谁了。但是这些网络监视系统是如何通过你的上网行为记录你的个人信息呢? 广告系统经常通过追踪用户行为的方法来建立用户信息库,以定位谁是目标…

【百度地图API】如何制作班级地理通讯录?LBS通讯录

原文:【百度地图API】如何制作班级地理通讯录?LBS通讯录摘要:班级通讯录必备的功能,比如人员列表,人员地理位置标注,展示复杂信息窗口,公交和驾车等。一般班级人员都不会超过300个,因为可以高效…

开发板——在X210开发板上进行裸机开发的流程

流程总结 本文以“LED流水灯”为例,说明在X210开发板上进行裸机开发的流程。 步骤一:搭建嵌入式Linux开发环境 在虚拟机中安装与配置Linux系统,并安装交叉编译工具链; 在win主机上安装dnw软件、九鼎烧写SD卡软件等内容。 步骤二&a…

zmail邮件系统安装手册 V2.0版本

2019独角兽企业重金招聘Python工程师标准>>> Tmail邮件系统安装手册 V2.0版本 1、系统环境 centos6.0以上,最小化安装(64位系统) 2、部署 1、删除自带的postfix、mysql、httpd # rpm -qa|grep postfix|xargs rpm -e --nodeps # rpm -qa|grep mysql|xargs…

Cassandra1.2文档学习(5)—— Snitch

参考资料:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/architectureSnitchesAbout_c.html#concept_ds_c34_fqf_fk 一个snitch(告密者)决定应当从哪个数据数据中心和机架写入和读取数据。…

Entity Framework在WCF中序列化的问题(转)

问题描述 如果你在WCF中用Entity Framework来获取数据并返回实体对象,那么对下面的错误一定不陌生。 接收对 http://localhost:5115/ReService.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。 这还可能是由于服务器中止了 HTTP …

【iHMI43 4.3寸液晶模块】demo例程(版本1.03)发布

技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:http://i-board.taobao.com 银杏科技 GINGKO TECH. 保留权利,转载请注明出处 一、简介: 1、iHMI43 演示程序(版本号:1…

SDRAM——X210的SDRAM的初始化

以下内容源于朱友鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考博客:s5pv210——初始化SDRAM - biaohc - 博客园 这里说的SDRAM,简单点理解就是内存。 一、SDRAM的简介 1、SDRAM的含义 SDRAM是Syncronized Dynamic Ramdam Access Me…

单独一台机器测试Open×××加密隧道的问题和解决

其实这篇文章和Open的关系倒不是很大,只是通过Open测试时暴露出的问题。这篇文章里面倒是包含了很多IP路由以及conntrack的细节内容。 有时候,为了节省机器,我希望在一台设备上模拟多个设备,当然,使用网络命名空…

SCRT中只换行不回车的问题(阶梯)

转载源:SecureCRT中只换行不回车的问题 - 知乎 在SecureCRT中有时会遇到由于Windows的换行和Unix的换行控制字符不同的问题(\r\n-\n),导致显示如下图所示的“阶梯”,又不想到源码中一个个改控制字符,此时可…

开发板——X210开发板的软开关(供电置锁)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、前言 本章节在裸机课程的SD卡启动部分。 本文讲述如何设置开发板,使得一按下电源键程序运行后即可松手不会断电,即供电置锁。 二、软开关的简介 电路设计一般使用拨码开…

国产Linux软件

为什么80%的码农都做不了架构师?>>> 本页面收集支持deepin/Linux的国产软件,对于每款软件以“日出东方-发行时间较短;正当壮年-时间较长且稳定;每况愈下-你们懂的”评价 软件版本时间评价有道词典 Linux版1.02015-03…

QGLViewer 编译安装步骤

由于工作学习的需要,要用opengl绘制显示些模型动画,原来用的是Qt做UI,直接调用的是QGLWidget类,但这个只是提供了基本的框架,很多交互操作还需添加代码完成,自己偷懒也觉得繁琐,就借用了开源的工…