springMVC--XML解析
一 springMVC 入口
web.xml; DispatcherServlet
二 初始化过程
1.寻找init();
查看DispatcherServlet时候时,继承自servlet,肯定有初始化方法,DispatcherServlet继承自FrameworkServlet
FrameworkServlet继承自HttpServletBean
HttpServletBean继承自HttpServlet,在HttpServlet中寻找到了init()方法
2.init做了那些事
HttpServletBean中,init方法中,通过 PropertyValues 包装属性,BeanWrapper 包装bean ,ResourceLoader 加载资源文件,initServletBean执行,但是此方法是空的
因此需要在子类中查找此方法。
FrameworkServlet中对initServletBean进行了重写,进入此方法中,首先是打印日志,其次执行initWebApplicationContext方法,进入initWebApplicationContext方法,调用了 configureAndRefreshWebApplicationContext方法,进入configureAndRefreshWebApplicationContext方法,ConfigurableEnvironment类负责配置文件是否起作用,在bean.xml中contex标签中profile ="true";wac.refresh()方法
AbstractApplicationContext中重写了refresh方法,此方法很重要
1.xml解析
2.annotation的支持
AbstractApplicationContext#refresh-->obtainFreshBeanFactory-->refreshBeanFactory
AbstractRefreshableApplicationContext#refreshBeanFactory-->loadBeanDefinitions(xml annotation)
AbstractXmlApplicationContext#loadBeanDefinitions-->loadBeanDefinitions-->loadBeanDefinitions
AbstractBeanDefinitionReader#loadBeanDefinitions-->loadBeanDefinitions
XmlBeanDefinitionReader#loadBeanDefinitions-->loadBeanDefinitions-->doLoadBeanDefinitions-->registerBeanDefinitions
DefaultBeanDefinitionDocumentReader#registerBeanDefinitions-->doRegisterBeanDefinitions-->parseBeanDefinitions 此处开始分流 解析xml分默认解析和自定义解析
解析xml parseDefaultElement 解析默认 import alias bean beans
parseCustomElement 解析自定义标签
自定义解析: parseCustomElement
NamespaceHandler
<context:property-placeholder location="classpath:config.properties" profile="true" />
<!-- 加载数据库配置文件 -->
<!-- 激活Spring注解方式:自动扫描,并注入bean -->
<context:component-scan base-package="com.dongnao" />
<context:annotation-config />
context找uri,beans有content对应的uri
spring.handlers里面就有uri对应的处理类,实现NamespaceHandler,会把这个命名空间对应的标签对应的处理注册进来
springMVC--XML解析的更多相关文章
- SpringMVC视图解析器
SpringMVC视图解析器 前言 在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视 图解析器.当我们对SpringMVC控制的资源发起 ...
- SpringMVC视图解析器(转)
前言 在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视图解析器.当我们对SpringMVC控制的资源发起请求时,这些请求都会被Sprin ...
- SpringMVC 视图解析器
SpringMVC 视图解析器 还记得SpringMVC 快速入门中,dispatcher-servlet.xml 配置的视图解析器么.它是SpringMVC 的核心知识点.本章节比较简单,明白视图解 ...
- 关于springMVC中component-scan的问题以及springmvc.xml整理
关于springMVC中component-scan的问题以及springmvc.xml整理 一.component-scan问题和解决办法 最近在学习使用springMVC+myba ...
- springmvc.xml 中 <url-pattern></url-pattern>节点详解
1. 先来上段常见的代码 <!-- MVC Servlet --> <servlet> <servlet-name>springServlet</servl ...
- springmvc.xml,context.xml和web.xml
1:springmvc.xml配置要点 一般它主要配置Controller的组件扫描器和视图解析器 下为:springmvc.xml文件 <?xml version="1.0" ...
- springmvc访问静态资源的springmvc.xml配置
一. 问题及需求 由于Spring MVC的web.xml文件中关于DispatcherServlet拦截url的配置为"/",拦截了所有的请求,同时*.js,*.jpg等静态资源 ...
- springmvc.xml和applicationContext.xml配置的特点
1:springmvc.xml配置要点 一般它主要配置Controller的组件扫描器和视图解析器 下为:springmvc.xml文件 <?xml version="1.0" ...
- Spring Boot实践——SpringMVC视图解析
一.注解说明 在spring-boot+spring mvc 的项目中,有些时候我们需要自己配置一些项目的设置,就会涉及到这三个,那么,他们之间有什么关系呢? 首先,@EnableWebMvc=Web ...
- SpringMVC-核心配置文件spring-mvc.xml
@Spring-MVC.xml @MVC的注解驱动 Bean模式 上面源码的配置我们看到了,其中映射器和适配器的注解模式是过时的所以我们需要重新配置一下. <!-- 配置处理器映射器 --> ...
随机推荐
- c++sort函数的使用总结
sort类函数: 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 partial_ ...
- 大数据项目之_15_帮助文档_NTP 配置时间服务器+Linux 集群服务群起脚本+CentOS6.8 升级到 python 到 2.7
一.NTP 配置时间服务器1.1.检查当前系统时区1.2.同步时间1.3.检查软件包1.4.修改 ntp 配置文件1.5.重启 ntp 服务1.6.设置定时同步任务二.Linux 集群服务群起脚本2. ...
- mybatis查询语句的背后
转载请注明出处... 一.前言 在先了解mybatis查询之前,先大致了解下以下代码的为查询做了哪些铺垫,在这里我们要事先了解,myabtis会默认使用DefaultSqlSessionFactory ...
- C# 接口属性的定义&get、set访问器的简单应用
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 接口 ...
- js 把 json 转为以 ‘&’ 连接的字符串
/** * URL编码; * @param {参数} param */ export function toParams(param) { var result = "" for ...
- CSS3_多列布局
CSS3 多列布局 可以随屏幕大小自适应布局 能够创建多个列对文本进行布局 属性 column-count: 5; 将文本分成 5 列 注意: 用户的屏幕大小 column-fill: bala ...
- 3.2station
题意火车进入,然后要求以最大字典序输出 解题思路:先用一个数组储存当前位置之后最大的数字是什么,然后把已经进站的最后一节火车和还没进站的车的最大值,哪个更大,如果已经进站的更大,那么就先出站,否则就先 ...
- Pandora 生成 Token
生成 token 打数据到仓库 通过 api 签名工具实现 最后通过curl -XPOST -H "Content-Type: application/json" -H " ...
- docker上配置mysql主从复制
1.在docker上启动2台mysql容器:(这里3306为主,3307为从) docker run -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 - ...
- Django登录与注销
一:Django中自带着登录,验证功能不用自己再去写登录功能. 1.从相应模块导入组件功能 from django.contrib.auth import authenticate,login 2.从 ...