具體參考我的gitee: springbootdubbo
spring-dubbo-provider.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 提供方應用名稱信息,這個相當於起一個名字,我們dubbo管理頁面比較清晰是哪個應用暴露出來的,保持唯一性 -->
<!-- java.net.BindException: Address already in use: bind-->
<dubbo:application name="Dubbo-springboot">
<dubbo:parameter key="qos.enable" value="true"/>
<dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
<dubbo:parameter key="qos.port" value="22222"/>
</dubbo:application>
<!--開啓註解掃描,使dubbo的註解生效-->
<dubbo:annotation package="com.jk.*"/>
<!-- 使用zookeeper註冊中心暴露服務地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" register="" check="false" subscribe="false" />
<!-- 多協議dubbo協議和rmi協議在20880端口暴露服務 -->
<!-- 如果你想記錄每一次請求信息,可開啓訪問日誌,類似於apache的訪問日誌。注意:此日誌量比較大,請注意磁盤容量-->
<dubbo:protocol name="dubbo" port="20881" accesslog="E:\oilrichfit\dubboAsk.log"/>
<!-- rmi consumer還得帶着token 訪問-->
<dubbo:protocol name="rmi" port="1099" accesslog="E:\oilrichfit\dubboAsk.log"/>
<!-- 和本地bean一樣實現服務 -->
<bean id="testService" class="com.jk.service.TestServiceImpl"></bean>
<!-- 聲明需要暴露的服務接口 -->
<dubbo:service interface="com.jk.service.TestService" ref="testService" timeout="30000"/>
<!-- 同一個接口多個實現類用group區分-->
<bean id="mysqlServiceA" class="com.jk.service.MysqlServiceImpl"></bean>
<!-- 令牌驗證防止消費者繞過註冊中心訪問提供者,消費者不需要做任何操作,如果直連直接被拒絕了 token="123456"-->
<!-- 用不同的協議-->
<dubbo:service interface="com.jk.service.MysqlService" protocol="dubbo" token="123456" group="ced" ref="mysqlServiceA" timeout="30000"/>
<bean id="mysqlServiceB" class="com.jk.service.MysqlServiceImpl2"></bean>
<!-- 多個實現類時有一個寫token就行,不然訪問其他接口時報錯-->
<dubbo:service interface="com.jk.service.MysqlService" protocol="rmi" group="fed" ref="mysqlServiceB" timeout="30000"/>
</beans>
spring-dubbo-consumer.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd" default-autowire="byName">
<!-- 消費方應用名稱信息,這個相當於起一個名字,我們dubbo管理頁面比較清晰是哪個應用調用的,保持唯一性 -->
<dubbo:application name="consumer-of-helloworld-app">
<dubbo:parameter key="qos.enable" value="true"/>
<dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
<dubbo:parameter key="qos.port" value="33333"/>
</dubbo:application>
<!-- 使用zookeeper註冊中心發現暴露的服務地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!-- 關閉所有服務的啓動時檢查 (沒有提供者時報錯)-->
<dubbo:consumer check="false"/>
<!-- 生成遠程服務代理,可以和本地bean一樣使用demoService,該interface需要與服務端暴露的服務interface保持一致,該id已注入Spring -->
<!-- 關閉某個服務的啓動時檢查 (沒有提供者時報錯)<dubbo:reference interface="com.foo.BarService" check="false" /> 提供者不錯操作-->
<!-- 增加對緩存的支持 cache="lru" 直接去緩存中取減少服務調用次數 提供者不做操作-->
<dubbo:reference id="testService" cache="lru" interface="com.jk.service.TestService" timeout="30000"></dubbo:reference>
<!-- 同一個接口多個實現類用group區分 其實就是當時兩個serviceImpl 兩個Controller 一個接口-->
<dubbo:reference id="mysqlServiceA" group="ced" cache="lru" interface="com.jk.service.MysqlService" timeout="30000"></dubbo:reference>
<dubbo:reference id="mysqlServiceB" group="fed" cache="lru" interface="com.jk.service.MysqlService" timeout="30000"></dubbo:reference>
</beans>