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

##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

spring mvc 配置解析之xml相关推荐

  1. 如何用Java类配置Spring MVC(不通过web.xml和XML方式)

    DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...

  2. Spring MVC配置多个视图解析器(FreeMarker,JSP)

    Spring MVC配置多个视图解析器(FreeMarker,JSP) Spring MVC开发过程中,有时候需要多个视图解析器策略来解析视图名称,出现这个情况怎么解决? 通过"order& ...

  3. spring MVC配置详解

    现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...

  4. Spring MVC 配置--解剖

    http://blog.csdn.net/ailihx/article/details/1909466 Spring MVC 配置--解剖 分类: Spring 2007-11-30 16:40 54 ...

  5. java 方式配置ssm,关于SSM以及Spring boot中对于Spring MVC配置的问题

    SSM中 Spring MVC配置 传统的web.xml配置 web.xml contextConfigLocation classpath*:applicationContext.xml org.s ...

  6. Spring MVC 流程图解析

    Spring MVC 流程图解析 Spring MVC工作流程图 图一 图二  SpringMVC工作流程描述 DispatcherServlet,HandlerMapping,HandlerExec ...

  7. SpringMVC基础--spring MVC配置详解

    牧涛 --<-<-<@态度决定一切→_→... 博客园 首页 新闻 新随笔 联系 管理 订阅 随笔- 171  文章- 3  评论- 79  spring MVC配置详解 现在主流的 ...

  8. [Spring mvc 深度解析(三)] 创建Spring MVC之器

    第9章 创建Spring MVC之器 ​ 本章将分析Spring MVC自身的创建过程.首先分析Spring MVC的整体结构,然后具体分析每一层的创建过程. 1 整体结构介绍 Spring MVC中 ...

  9. spring MVC RequestMappingHandlerMapping解析

    spring MVC RequestMappingHandlerMapping解析 getHandler(HttpServletRequest request) 在doDispatch(HttpSer ...

最新文章

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

热门文章

  1. leetcode55 跳跃游戏 秒杀所有答案
  2. (十四)nodejs循序渐进-高性能游戏服务器框架pomelo之开发Treasures游戏
  3. elasticsearch的Linux下安装报错问题解决
  4. STL源码剖析 map
  5. 规范化流程化提交自己代码到远程gitlab服务器
  6. Linux ubuntu对于cmake的版本更新
  7. mininet 应用实践
  8. Java JUC工具类--Master-Worker
  9. 英语口语 week11 Friday
  10. Android Glide图片加载框架(二)源码解析之load()