SpringMVC核心配置文件
2016-04-13 20:18
639 查看
Spring支持2中不同类型的数据定义模式,对SpringMVC中的组件进行声明,指定组件的行为方式
基于Traditional XML的配置定义模式
基于Schema-based XML的配置定义模式
引入Schema-based XML是为了对Traditional的XML配置形式进行简化。通过Schema的定义,把一些原本需要通过几个bean的定义或者复杂的bean的组合定义的配置形式,用另外一种简单而可读的配置形式呈现出来。 Schema-based XML可以极大改善配置文件的可读性并且缩小配置文件的规模。而实际上,Schema-based XML的引入,是把原本静态的配置动态化、过程化。
Schema-based XML相比较Traditional XML至少有三个方面的优势:
namespace —— 拥有很明确的逻辑分类
element —— 拥有很明确的过程语义
attributes —— 拥有很简明的配置选项
这段配置想要表达的意思,就是在mvc的空间内实现Annotation驱动的配置方式。其中,mvc表示配置的有效范围,annotation-driven则表达了一个动态的过程,实际的逻辑含义是:整个SpringMVC的实现是基于Annotation模式,请为我注册相关的行为模式。
一个Schema-based XML有两大构成要素:过程实现和配置定义。
1)所谓过程实现就是配置文件背后逻辑的实现过程,由2个接口完成:
NamespaceHandler —— 对Schema定义中namespace的逻辑处理接口
BeanDefinitionParser —— 对Schema定义中element的逻辑处理接口
NamespaceHandler是入口,它去调用BeanDefinitionParser的实现以实现各个逻辑。
如MvcNamespaceHandler中
ResourcesBeanDefinitionParser就是的实现,这样我们不用写bean,可以通过编程(写ResourcesBeanDefinitionParser类)的方式对Bean进行注册,所以大大简化了XML配置。
2)所谓的配置定义,就是通过一些配置文件,将上述的过程实现类串联起来,从而完成整个Schema-based XML的定义,有2部分组成:
Schema定义 —— 一个xsd文件,描述整个Schema空间中element和attribute的定义
注册配置文件 —— 由META-INF/spring.handlers和META-INF/spring.schemas构成,用以注册Schema和Handler
Schema定义(xsd文件)如 http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd ,这个文件被同步发布于网上,但是你发现在无法上网的环境下还是能运行Spring,因为这个XSD文件在spring-webmvc下有备份
xsi:schemaLocation声明就是用于指定映射于本地的XSD文件,使Spring自动查找本地的缓存来进行schema的寻址。
在初始化的时候有一个log日志,org.springframework.beans.factory.support.DefaultListableBeanFactory@495c998a: defining beans,其下面就是组件注册的细节
基于Traditional XML的配置定义模式
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/" /> <property name="suffix" value=".jsp" /> </bean>
基于Schema-based XML的配置定义模式
<mvc:annotation-driven />
引入Schema-based XML是为了对Traditional的XML配置形式进行简化。通过Schema的定义,把一些原本需要通过几个bean的定义或者复杂的bean的组合定义的配置形式,用另外一种简单而可读的配置形式呈现出来。 Schema-based XML可以极大改善配置文件的可读性并且缩小配置文件的规模。而实际上,Schema-based XML的引入,是把原本静态的配置动态化、过程化。
Schema-based XML相比较Traditional XML至少有三个方面的优势:
namespace —— 拥有很明确的逻辑分类
element —— 拥有很明确的过程语义
attributes —— 拥有很简明的配置选项
这段配置想要表达的意思,就是在mvc的空间内实现Annotation驱动的配置方式。其中,mvc表示配置的有效范围,annotation-driven则表达了一个动态的过程,实际的逻辑含义是:整个SpringMVC的实现是基于Annotation模式,请为我注册相关的行为模式。
一个Schema-based XML有两大构成要素:过程实现和配置定义。
1)所谓过程实现就是配置文件背后逻辑的实现过程,由2个接口完成:
NamespaceHandler —— 对Schema定义中namespace的逻辑处理接口
BeanDefinitionParser —— 对Schema定义中element的逻辑处理接口
NamespaceHandler是入口,它去调用BeanDefinitionParser的实现以实现各个逻辑。
如MvcNamespaceHandler中
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()); }
ResourcesBeanDefinitionParser就是的实现,这样我们不用写bean,可以通过编程(写ResourcesBeanDefinitionParser类)的方式对Bean进行注册,所以大大简化了XML配置。
2)所谓的配置定义,就是通过一些配置文件,将上述的过程实现类串联起来,从而完成整个Schema-based XML的定义,有2部分组成:
Schema定义 —— 一个xsd文件,描述整个Schema空间中element和attribute的定义
注册配置文件 —— 由META-INF/spring.handlers和META-INF/spring.schemas构成,用以注册Schema和Handler
Schema定义(xsd文件)如 http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd ,这个文件被同步发布于网上,但是你发现在无法上网的环境下还是能运行Spring,因为这个XSD文件在spring-webmvc下有备份
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
xsi:schemaLocation声明就是用于指定映射于本地的XSD文件,使Spring自动查找本地的缓存来进行schema的寻址。
在初始化的时候有一个log日志,org.springframework.beans.factory.support.DefaultListableBeanFactory@495c998a: defining beans,其下面就是组件注册的细节
相关文章推荐
- Java中怎么切换窗口
- java 获取 jar 包内文件列表
- Java中的内部类
- Java静态变量的初始化(static块的本质)
- eclipse设置的断点上有斜线
- 程序猿二三事之工具使用-Eclipse常用快捷键
- struts2中result跳转jsp时路径问题
- Java 压缩zip格式文件
- java的锁机制
- 我所了解的java单例模式
- SpringMVC三大设计原则
- Java虚拟机(JVM)体系结构概述及各种性能参数优化总结
- org.springframework.web.servlet.DispatcherServlet
- java开发之反射
- Java设计模式(二) Decorator(装饰)模式及Java I/O引申
- Myeclipse2014 安装反编译插件
- Java Web项目中Maven管理jar包,如何用命令添加ja包!
- Spring事务之事务控制方式
- Java中的排序方法(冒泡排序 和 选择排序)
- Intellij idea 和myeclipse的最常用快捷键