在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直接基于Spring的标准Bean来配置,但是对于一些常用组件,我们不希望通过每个项目时候的都通过配置bean实例,而是通过一个标签来简洁的实现此功能,比如:
<context:component-scan base-package="com.qunar.flight.nts.web"/>
或者 <mvc:default-servlet-handler/>
Spring提供了可扩展Schema的支持,这是一个不错的折中方案,完成一个自定义配置标签一般需要以下步骤:
设计配置属性和JavaBean
编写XSD文件
编写NamespaceHandler和BeanDefinitionParser完成解析工作
编写spring.handlers和spring.schemas串联起所有部件
附件是我实现的一个样例,欢迎参考学习~
注意:
1、xsd存放在classpath下,一般都放在META-INF目录下(本例就放在这个目录下)
2、spring提供了spring.handlers和spring.schemas这两个配置文件来完成这项工作,这两个文件需要我们自己编写并放入META-INF文件夹中,这两个文件的地址必须是META-INF/spring.handlers和META-INF/spring.schemas,spring会默认去载入它们。