Spring可扩展Schema

完成一个自定义配置一般需要以下步骤:

以dubbo为例
1、设计配置属性和JavaBean(ApplicationConfig)
2、编写XSD文件(dubbo.xsd)
3、编写NamespaceHandler(根据schema和节点名找到某个BeanDefinitionParser)
编写BeanDefinitionParser(完成解析工作)
4、编写spring.handlers文件

//表示当使用到名为"http://code.alibabatech.com/schema/dubbo"的schema引用时
//会通过com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler来完成解析
http\://code.alibabatech.com/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler

编写spring.schemas文件串联起所有部件

//表示当使用到名为"http://code.alibabatech.com/schema/dubbo"的schema引用时
//载入xsd文件
http\://code.alibabatech.com/schema/dubbo/dubbo.xsd=META-INF/dubbo.xsd

5、在Bean文件中应用

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       //dubbo这里是命名
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd          
    http://code.alibabatech.com/schema/dubbo          
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="dubbo_provider_bean"  />

    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" protocol="registry"/>

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.xmy.dubbo.service.DubboProviderBeanService" ref="dubboProviderBeanService" version="dev_bean"/>

    <!-- 和本地bean一样实现服务-->
    <bean id="dubboProviderBeanService" class="com.xmy.dubbo.service.impl.DubboProviderBeanServiceImpl" />

</beans>

基于Spring可扩展Schema提供自定义配置支持

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容