码迷,mamicode.com
首页 > 编程语言 > 详细

Spring 源码分析(四)--自定义标签的使用

时间:2018-02-11 14:43:37      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:位置   r文件   --   ima   分享图片   使用   xml文件   ons   gate   

    在之前的代码分析中,Spring标签的解析分为 默认标签和自定义标签两种,前一篇文章分析了Spring中对默认标签的解析过程。

    本文将分析Spring中自定义标签的使用过程:

一:回顾

public class DefaultBeanDefinitionDocumentReader implements BeanDefinitionDocumentReader {

     /**
     * Parse the elements at the root level in the document:
     * "import", "alias", "bean".
     * @param root the DOM root element of the document
     */
    protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) {
        if (delegate.isDefaultNamespace(root)) {
            NodeList nl = root.getChildNodes();
            for (int i = 0; i < nl.getLength(); i++) {
                Node node = nl.item(i);
                if (node instanceof Element) {
                    Element ele = (Element) node;
                    if (delegate.isDefaultNamespace(ele)) {
                        parseDefaultElement(ele, delegate);
                    }
                    else {
                        delegate.parseCustomElement(ele);
                    }
                }
            }
        }
        else {
            delegate.parseCustomElement(root);
        }
    }

}

  在DefaultBeanDefinitionDocumentReader 类中,分别对默认标签和自定义标签做了不同的解析处理。

 

二:自定义标签使用

    很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直接基于Spring的标准bean来配置,但配置较为复杂或者需要更多丰富控制的时候,会显得非常笨拙。一般的做法会用原生态的方式取解析定义好的XML文件,然后转化为配置对象。这种方式当然可以解决所有问题,但实现起来比较繁琐,特别是在配置非常复杂的时候,解析工作是一个不得不考虑的负担。Spring提供了可扩展Schema的支持,这是一个不错的折中方案,扩展Spring自定义标签配置大致需要以下几个步骤(前提是要把Spring的Core包加入项目中)。

  • 创建一个需要扩展的组件
  • 定义一个XSD文件描述组件内容
  • 创建一个文件,实现BeanDefinitionParser接口,用来解析XSD文件中的定义和组件定义
  • 创建一个Handler文件,扩展自NamespaceHandlerSupport,目的是将组件注册到Spring容器。
  • 编写Spring.handlers和Spring.schemas文件。

(1)创建一个需要扩展的组件

技术分享图片

 

 

(2)定义一个XSD文件描述组件内容

技术分享图片

 

(3)创建一个文件,实现BeanDefinitionParser接口,用来解析XSD文件中的定义和组件定义

技术分享图片

(4)创建一个Handler文件,扩展自NamespaceHandlerSupport,目的是将组件注册到Spring容器。

技术分享图片

 

(5)编写Spring.handlers和Spring.schemas文件,默认位置是在工程的/META-INF/文件夹下,当然,你可以通过Spring的扩展或者修改源码的方式改变路径。

技术分享图片

 

(6)创建测试配置文件,在配置文件中引入对应的命名空间以及XSD后,便可以直接使用自定义标签了。

技术分享图片

 

(7)测试

技术分享图片

 

Spring 源码分析(四)--自定义标签的使用

标签:位置   r文件   --   ima   分享图片   使用   xml文件   ons   gate   

原文地址:https://www.cnblogs.com/fdzfd/p/8440629.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!