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執(zhí)行,但是此方法是空的
因此需要在子類中查找此方法。
FrameworkServlet中對initServletBean進行了重寫,進入此方法中,首先是打印日志,其次執(zhí)行initWebApplicationContext方法,進入initWebApplicationContext方法,調(diào)用了 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" />
<!-- 加載數(shù)據(jù)庫配置文件 -->
<!-- 激活Spring注解方式:自動掃描,并注入bean -->
<context:component-scan base-package="com.dongnao" />
<context:annotation-config />
context找uri,beans有content對應的uri
spring.handlers里面就有uri對應的處理類,實現(xiàn)NamespaceHandler,會把這個命名空間對應的標簽對應的處理注冊進來
轉(zhuǎn)載于:https://www.cnblogs.com/xiaoxiannvBlog/p/9607926.html
總結(jié)
以上是生活随笔為你收集整理的springMVC--XML解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net core结合NLog搭建
- 下一篇: ASP.NET WebApi 基于JWT