完成一个自定义配置一般需要以下步骤:
以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>