完成一個(gè)自定義配置一般需要以下步驟:
以dubbo為例
1、設(shè)計(jì)配置屬性和JavaBean(ApplicationConfig)
2馅袁、編寫XSD文件(dubbo.xsd)
3、編寫NamespaceHandler(根據(jù)schema和節(jié)點(diǎn)名找到某個(gè)BeanDefinitionParser)
編寫B(tài)eanDefinitionParser(完成解析工作)
4、編寫spring.handlers文件
//表示當(dāng)使用到名為"http://code.alibabatech.com/schema/dubbo"的schema引用時(shí)
//會(huì)通過com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler來完成解析
http\://code.alibabatech.com/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler
編寫spring.schemas文件串聯(lián)起所有部件
//表示當(dāng)使用到名為"http://code.alibabatech.com/schema/dubbo"的schema引用時(shí)
//載入xsd文件
http\://code.alibabatech.com/schema/dubbo/dubbo.xsd=META-INF/dubbo.xsd
5直晨、在Bean文件中應(yīng)用
<?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">
<!-- 提供方應(yīng)用信息,用于計(jì)算依賴關(guān)系 -->
<dubbo:application name="dubbo_provider_bean" />
<!-- 使用zookeeper注冊中心暴露服務(wù)地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" protocol="registry"/>
<!-- 用dubbo協(xié)議在20880端口暴露服務(wù) -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 聲明需要暴露的服務(wù)接口 -->
<dubbo:service interface="com.xmy.dubbo.service.DubboProviderBeanService" ref="dubboProviderBeanService" version="dev_bean"/>
<!-- 和本地bean一樣實(shí)現(xiàn)服務(wù)-->
<bean id="dubboProviderBeanService" class="com.xmy.dubbo.service.impl.DubboProviderBeanServiceImpl" />
</beans>