在xml配置的方式中,经常看到一些框架自定义的标签,看起来很高级。其中要实现,很简单。
声明自己的schema
这是第一步,首先为自己的组件定义合适的xml schema。这部分需要xsd的知识,不是本文重点,不做展开。
定义好自己的schema之后,放在某个目录下,通常是META-INF/下。
配置
在resource/META-INF下增加两个文件,就是spring.handlers和spring.schemas。
spring.schemas用于配置xml命名空间和第一步创建的xsd文件
http\://xxx.com/schema/test.xsd=META-INF/test.xsd
而spring.handlers则是为标签(命名空间)添加解析器的。
http\://xxx.com/schema/test=com.xxx.xxxxx.TestHandler
解析器的作用就是将这段自定义xml转换成BeanDefinition,并且注册到BeanFactory上,因此这里的标签解析器,其实是一个BeanDefinitionParser 。
在自定义标签的实践中,可以通过NamespaceHandlerSupport 而不是直接使用BeanDefinitionParser ,来获得一些便捷。
生成BeanDefinition
反正根据自己需要,创建合适的BeanDefinition就好,没啥好说的。
网友评论