spring boot整合dubbo

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

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

相關文檔:web

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

Spring Dubbo開發筆記(二)——dubbo初始化api

Spring Dubbo開發筆記(三)——dubbo擴展springboot

相關使用介紹:http://www.javashuo.com/article/p-njawkkpr-mb.htmlapp

聲明:ide

1. 這個只是我的研究使用,spring boot 啓動dubbo還有不少方法(@ImportResource)優化

2.這個只是初版,基本功能已實現(其實底層代碼仍是使用Dubbo,只是處理了Dubbo基礎上封裝了spring boot啓動時加載和初始化Dubbo相關),一些擴展和優化還會繼續更新ui

你能夠像配置springboot其餘屬性同樣配置dubbo屬性

dubbo:
  application:
    name: lizo
  registry:
    address: multicast://224.5.6.7:1234
  protocol:
    name: dubbo
    port: 20887

@EnableDubbo

使用這個註解來開啓dubbo服務

@SpringBootApplication
@EnableDubbo(basePackages = "com.alibaba.dubbo")
public class Provider {

    public static void main(String[] args) throws InterruptedException {
        ApplicationContext ctx = new SpringApplicationBuilder()
                .sources(Provider.class)
                .web(false) 
                .run(args);
        new CountDownLatch(1).await();
    }
}

這樣就能夠使用基於註解的dubbo的rpc調用

api interface :

public interface AddService {
    int add(int a, int b);
}

provider bean:

@Service
public class AddServiceImpl implements AddService {
    @Override
    public int add(int a, int b) {
        return a + b;
    }
}

consumer bean:

@Component
public class ConsumerAction {

    @Reference
    private AddService addService;

    public void add(int a,int b){
        System.out.println("ret = " + addService.add(a,b));
    }
}

 ############################2017年3月5日 新增功能#########################

dubbo filter

能夠像定義通常的spring bean 定義一個dubbo filter

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

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

固然若是你有跟定製化的需求,也能夠使用dubbo原生的註解@Activate,只要繼承AbstractDubboFilterSupport

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

    public Filter getDefaultExtension() {
        return this;
    }
}
相關文章
相關標籤/搜索