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. AfxBeginThread的介绍/基本用法和Window多线程使用详解
  2. 事件标志组的等待与通知
  3. EXCEL的下拉列表
  4. mysqlsql怎么比较当前月与去年的这个月的同比_多数房企前10月业绩稳步增长 这12家企业为何“负增长”?...
  5. Python GIL
  6. 《数据库设计入门经典》读书笔记——第二章:工作场所中的数据库建模
  7. pulsar基础(六)——namespace的基本操作
  8. android上传图片失败问题
  9. [Project Euler] 来做欧拉项目练习题吧: 题目005
  10. python界面登录程序_python的基础程序——简陋的管理员(用户)登录界面
  11. 词霸天下---177 词根 【 -vast- = -wast- 空,荒废 】仅供学习使用
  12. 【计算机网络】计算机网络总结
  13. python pdf 加水印_Python中通过PyPDF2实现PDF添加水印
  14. 资讯App排行榜出炉,凤凰新闻客户端如何成了行业变量?
  15. 配置汇编环境(王爽)
  16. nova读取配置文件流程
  17. oracle查看主备库延迟时间,【分享】Oracle 主备库容灾维护常用的九个SQL
  18. c#获取串口列表(可用于实现实时监控串口)
  19. (1)OCR学习-相关知识
  20. cropping IplImage most effectively

热门文章

  1. C++:48---纯虚函数
  2. MachineLearning(2)-图像分类常用数据集
  3. Java中int[]与Integer[]相互转化的方法
  4. 《Java8实战》笔记(16):结论以及Java的未来
  5. 搭建基于飞桨的OCR工具库,总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别的PaddleOCR
  6. InputStream 类型
  7. C语言 返回指针的函数--指针函数 int* max(int a)
  8. 研究显示每天工作超8小时得心脏病概率增加80%,生命很重要,工作不要那个累。
  9. 三星“打法”:先模仿对手 再吃掉对手
  10. 利用qt和ffmpeg软件来制作视频裁剪工具