spring xml 配置文件中标签的解析
一个springmvc配置文件的例子为:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
- <description>spring Configuration</description>
- <mvc:annotation-driven />
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/" />
- <property name="suffix" value=".jsp" />
- </bean>
- <context:component-scan base-package="org.xuan.springmvc.controller"
- use-default-filters="false"><!-- base-package 如果多个,用“,”分隔 -->
- <context:include-filter type="annotation"
- expression="org.springframework.stereotype.Controller" /> <!-- 子标签是用来添加扫描注解的 -->
- </context:component-scan>
- </beans>
sprin读取到这个文件后是如何进行解析的呢?
首先这个xml包含了命名空间如:
- xmlns:mvc="http://www.springframework.org/schema/mvc"
这个文件命名空间对应解析规则在spring-xxx-x.x.x.RELEASE.jar/META-INF/spring.handlers文件中,比如:
spring-web-4.3.7.RELEASE.jar/META-INF/spring.handlers
打开文件spring.handlers
- http\://www.springframework.org/schema/mvc=org.springframework.web.servlet.config.MvcNamespaceHandler
得到处理的类是MvcNamespaceHandler
然后在这个xml中还有一些标签如:
- <mvc:annotation-driven />
这个标签对应解析配置就在MvcNamespaceHandler中,打开文件查看内容:
- public class MvcNamespaceHandler extends NamespaceHandlerSupport {
- @Override
- 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());
- registerBeanDefinitionParser("redirect-view-controller", new ViewControllerBeanDefinitionParser());
- registerBeanDefinitionParser("status-controller", new ViewControllerBeanDefinitionParser());
- registerBeanDefinitionParser("view-resolvers", new ViewResolversBeanDefinitionParser());
- registerBeanDefinitionParser("tiles-configurer", new TilesConfigurerBeanDefinitionParser());
- registerBeanDefinitionParser("freemarker-configurer", new FreeMarkerConfigurerBeanDefinitionParser());
- registerBeanDefinitionParser("velocity-configurer", new VelocityConfigurerBeanDefinitionParser());
- registerBeanDefinitionParser("groovy-configurer", new GroovyMarkupConfigurerBeanDefinitionParser());
- registerBeanDefinitionParser("script-template-configurer", new ScriptTemplateConfigurerBeanDefinitionParser());
- registerBeanDefinitionParser("cors", new CorsBeanDefinitionParser());
- }
- }
所以当读取到annotation-driven标签的时候就会去AnnotationDrivenBeanDefinitionParser中进行处理。
spring xml 配置文件中标签的解析的更多相关文章
- 刨析Maven(对pom.xml配置文件常用标签的解析)
昨天在阿里云看到了一句话,"当你Learning和Trying之后,如果能尽量把Teaching也做好,会促进我们思考".共勉! 这是关于Maven的第三篇博客,这次我们深入了解p ...
- [spring]xml配置文件中的"classpath:"与"classpath*:"的区别
<bean id="sessionFactorySaas" class="org.mybatis.spring.SqlSessionFactoryBean" ...
- [spring]xml配置文件中bean属性的两种写法(p:configLocation <=> <property name="configLocation"/>)
1.当作bean节点的属性:p:configLocation: <!-- mybatis文件配置,扫描所有mapper文件 --> <bean id="sqlSession ...
- Spring的xml配置文件中约束的必要性 找不到元素 'beans' 的声明
今天在复习Spring MVC框架的时候,只知道xml配置文件中的约束有规范书写格式的作用,所以在配置HandlerMapping对象信息的时候没有加入约束信息之后进行测试,没有遇到问题.后来在配置S ...
- tomcat设置默认欢迎页、server.xml配置文件中的标签理解
一:要求:输入网址,不加文件名便可以访问默认页面 (1)项目中只有静态文件 方法:更改tomcat下的conf目录下的web.xml文件,如下图: <welcom-file-list>元素 ...
- 通过java程序调用ant build.xml配置文件中指定的target
一.概述 通过ant实现项目的自动化部署,jar包生成,替换,tomcat关停.启动,查看项目日志: 通过java程序调用已编辑好的ant脚本build.xml配置文件中指定的target: 文中文件 ...
- mybatis 中的 xml 配置文件中 ‘<’、 ‘>’ 处理
mybatis 中的 xml 配置文件中 '<'. '>' 处理 1.使用转义字符将 '<'. '>' 替换掉. 描述 字符 转义字符 小于号 < < 大于号 &g ...
- spring*.xml配置文件明文加密
spring*.xml配置文件明文加密 说明:客户要求spring*.xml中Oracle/Redis/MongoDB的IP.端口.用户名.密码不能明文存放,接到需求的我,很无奈,但是还是的硬着头皮搞 ...
- Eclipse创建Spring XML配置文件插件
引用:https://www.cnblogs.com/lideqiang/p/9067219.html 第一步:在 Eclipse Marketplace仓库中,搜索sts 第二步:安装Spring ...
随机推荐
- Spring是一个分层的Java
Spring简介 Spring是一个分层的Java SE/EE应用一站式的轻量级开源框架.Spring核心是IOC和AOP. Spring优点 -方便解耦,简化开发,通过Spring提供的IoC容器, ...
- Start and Stop Bitbucket Server
Starting and stopping Bitbucket Server This page describes the various ways you can start or stop Bi ...
- [题解](优先队列广搜)POJ_3635_Full Tank
用二元组$(city,fuel)$即可记录所有状态,以当前花费为关键字优先队列,开数组记录直接做即可 有一个点在于每次不用枚举所有的加油数量,只需要加一即可,因为如果在加一升更优的话又会扩展出加更多油 ...
- 我选择了学Python
我觉得选择了这个行业,技术不行不是最可怕的,但是要有这种意愿去改变,要有学习的上进心. 人生三件事很重要,第一.在关键时候自己的选择很重要,第二.找到自己的贵人很重要,第三.就是付诸行动去做很重要. ...
- LDAP相关操作注意事项
lc.Modify(entry.DN, new LdapModification(LdapModification.REPLACE, new LdapAttribute("mDBUseDef ...
- Hadoop_配置Hadoop开发环境(Eclipse)
通常我们可以用Eclipse作为Hadoop程序的开发平台. 1) 下载Eclipse 下载地址:http://www.eclipse.org/downloads/ 根据操作系统类型,选择合适的版本 ...
- JAVA对象转换JSON
1. 把java 对象列表转换为json对象数组,并转为字符串 复制代码 代码如下: JSONArray array = JSONArray.fromObject(userlist); String ...
- 安装pywin32出现--Python version 3.x required, which was not found in the registry
这两天安装pywin32时出现了这个问题 双击.exe文件进入安装界面,然后点击下一步,它会自动定位你的python安装在什么地方,但是我的安装过程中未自动定位到python安装位置,并显示显示: 安 ...
- java——String、StringBuffer、StringBuilder、包装类、单双引号
String: String是一个特殊的类,被定义为final类型,为字符串常量,同样的字符串在常量池中不能重复. 但是由于使用关键字new创建新的字符串,java会在对中分配新的空间,这样即使字符串 ...
- Linux安装配置相关
1.常用汇总 useradd usertemp //添加用户 passwd usertemp //修改/设置密码 userdel usertemp //删除用户 2. profile/baserc等配 ...