Spring Dubbo 開發筆記(一)——概述

概述:

Spring Dubbo 是我本身寫的一個基於spring-boot和dubbo,目的是使用Spring boot的風格來使用dubbo。(便可以瞭解Spring boot的啓動過程又能夠學習一下dubbo的框架)git

項目介紹:github

github: https://github.com/Athlizo/spring-dubbo-parentspring

碼雲:  https://git.oschina.net/null_584_3382/spring-dubbo-parentmvc

有興趣的朋友能夠一塊兒交流學習。app

1 如今是怎麼啓動dubbo

1.1 依賴dubbo jar包

若是不使用dubbo的spring框架,在maven依賴dubbo的時候配置就以下,dubbo 2.5.3的spring 框架版本還停留在2.5.6。框架

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.5.3</version>
    <exclusions>
        <exclusion>
            <artifactId>spring</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
    </exclusions>
</dependency>

1.2 dubbo的配置:

1.2.1 經過配置文件:

如今的啓動方式也很簡單,使用dubbo提供的com.alibaba.dubbo.container.Main方法,在classpath下面加入配置文件dubbo.properties,例如:maven

dubbo.container=spring
dubbo.spring.config=classpath*:spring-all.xml
dubbo.registry=zookeeper://localhost:12181
dubbo.port=20882

其中 spring-all.xml 就是咱們配置spring的文件。若是不配置,默認是從META-INF.spring中讀取xml文件spring-boot

1.2.2 經過spring的xml中

也就是直接在xml配置中配置,例如學習

<dubbo:application name="${dubbo.appname}"/>
<dubbo:registry address="${dubbo.registry}"/>
<dubbo:protocol name="dubbo" port="${dubbo.port}"/>

1.3 dubbo bean

能夠經過xml和註解的方式來聲明,就不在贅述(用過dubbo的都知道)spa

2. 存在的問題(前提是使用Spring Boot來啓動dubbo服務)

2.1 dubbo的配置

dubbo的文件路徑是固定的,也就是classpath下的dubbo.properties

2.2 dubbo bean

只能經過xml來配置,而後經過@ImportResource來引入配置xml文件。這個和spring boot風格不搭

2.3 使用dubbo的擴展

2.3.1 dubbo擴展定義

要使用dubbo的擴展功能(最經常使用的就是filter,已定義一個本身的filer爲例子),必須按照他的要求來,首要要在指定目錄下建立一個擴展的文件配置類,【路徑寫死了的】,代碼爲證:

private static final String SERVICES_DIRECTORY = "META-INF/services/";
private static final String DUBBO_DIRECTORY = "META-INF/dubbo/";
private static final String DUBBO_INTERNAL_DIRECTORY = DUBBO_DIRECTORY + "internal/";
loadFile(extensionClasses, DUBBO_INTERNAL_DIRECTORY);
loadFile(extensionClasses, DUBBO_DIRECTORY);
loadFile(extensionClasses, SERVICES_DIRECTORY);

而後在文件裏面加入加入咱們定義的filter

mymock=com.alibaba.dubbo.config.spring.filter.MockFilter

而後在建立一個這樣的類 實現filter接口。加上@Activate註解。

2.3.2 dubbo擴展的使用

dubbo的擴展都是經過反射來獲取的,那麼要在構造的時候加入一些參數顯然也就不可能。而且不是bean也不是經過spring 來管理,要使用@Autowire等也不行。

spring mvc中的filter,只要建立一個filter的bean就能生效。

2.4 我想一想先

3 spring boot化的dubbo服務

介紹:http://www.javashuo.com/article/p-sxhdxhqq-gk.html

優勢就是:spring boot風格

缺點就是:若是你不認spring boot,那麼都是缺點

相關文章
相關標籤/搜索