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模式 上面源码的配置我们看到了,其中映射器和适配器的注解模式是过时的所以我们需要重新配置一下. <!-- 配置处理器映射器 --> ...
随机推荐
- jmeter的基本功能使用详解
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简 单.因为jmeter是java开发的,所以运行的时候必须先要 ...
- Ubuntu12.04 LTS 32位 安装ns-2.35
ubuntu12.04lts 32-bit默认采用gcc 4.6和g++4.6,而ns的最新版本ns 2.3.5也采用了相同到版本,所以这方面不会有版本不同到问题 收回上面这句话..../valida ...
- Ubuntu安装VLC播放器
Ubuntu安装VLC官方介绍:http://www.videolan.org/vlc/download-ubuntu.html sudo apt-get update sudo apt-get in ...
- Do-Now—团队冲刺博客四
各个成员今日完成的任务 侯泽洋:完成奖励页面设计,完成奖励从云端拉取到本地:完成奖励从云端拉取到本地 周亚杰:冲刺博客,个人中心设计(未完成) 王志伟:积分页面设计:积分页面设计 仇夏:树苗成长过程设 ...
- Nginx配置:nginx如何配置跳转fpm
location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_inf ...
- 小甲鱼零基础python课后题 P22 021函数:lambda表达式
0.请使用lambda表达式将下边函数转变为匿名函数 def fun_A(x,y=3): return x*y 答: lambda x,y=3:x*y 1.请将下边的匿名函数转变为普通的屌丝函数 la ...
- js 重写alert 兼容iphone使得alert 不带src
<script> window.alert = function(name){ var iframe = document.createElement("IFRAME" ...
- 从vue源码看Vue.set()和this.$set()
前言 最近死磕了一段时间vue源码,想想觉得还是要输出点东西,我们先来从Vue提供的Vue.set()和this.$set()这两个api看看它内部是怎么实现的. Vue.set()和this.$se ...
- 记一次mariadb升级故障
由于做mariadb集群,将版本从自带的5.5升级到10.0.3,升级成功后发现起不来 查journal log,只有一行warning can’t create test file /var/lib ...
- Android的几种Manager
电话管理器TelephoneManager 第一个实例是获取网络和SIM卡信息:界面是一个列表,这里省略,Java代码如下: public class MainActivity extends Act ...