1. 程式人生 > >spring-boot整合dubbo:Spring-boot-dubbo-starter

spring-boot整合dubbo:Spring-boot-dubbo-starter

hub pack 自動配置 china end service get exceptio 整合

為什麽要寫這個小工具

如果你用過Spring-boot來提供dubbo服務,相信使用中有很多“不爽”的地方。既然使用spring boot,那麽能用註解的地方絕不用xml配置,這才是spring-boot-style。開個玩笑,真正意思是,spring-boot適合一些簡單的、獨立的服務,一個大的系統是不適合使用spring-boot來開發。相反,spring-boot適合那些簡單服務的搭建。 網上大多數的方法還是使用xml配置,[email protected]

怎麽使用

  1. 對於服務的消費者或提供者,[email protected]@Reference來聲明
  2. 在application.properties/yml 中配置dubbo的相關參數,例如下面就是一個簡單的消費者的配置
    dubbo:
     application:
         name: lizo-consumer
     registry:
         address: zookeeper://localhost:12181
  3. [email protected](basePackages = "xxx.xxx.xxx") 來開啟dubbo的自動配置

經過以上3個步驟,就可以完成對dubbo的配置,是不是很Spring-bootstyle

dubbo-filter

dubbo有很多擴展,其中filter是使用比較多一個。但是用起來很不方便。如果能像Spring boot定義Spring MVC的filter那樣簡單聲明一個bean就好了。恩,其實就是這樣。

    @Bean
    ProviderFilter providerFilter() {
        return new ProviderFilter();
    }

    static class ProviderFilter extends AbstractDubboProviderFilterSupport {
        public Result invoke(Invoker<?> invoker, Invocation invocation) {
            System.out.println("ProviderFilter");
            
return invoker.invoke(invocation); } }

更定制化的需求,[email protected],那麽可以這樣

    @Bean
    CustomFilter customFilter() {
        return new CustomFilter();
    }

    @Activate(group = Constants.PROVIDER)
    static class CustomFilter extends AbstractDubboFilterSupport {
        public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
            System.out.println("ProviderFilter2");
            return invoker.invoke(invocation);
        }

        public Filter getDefaultExtension() {
            return this;
        }
    }

如果感興趣

源碼及其demo地址:

  • 碼雲:https://git.oschina.net/null_584_3382/spring-dubbo-parent
  • github:https://github.com/Athlizo/spring-dubbo-parent

最後說明

  • dubbo底層代碼是沒進行開發過的,只是在其基礎上進行的封裝。
  • 不支持多註冊源
  • 有bug或者有代碼優化建議歡迎反饋

spring-boot整合dubbo:Spring-boot-dubbo-starter