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
使用這個註解來開啓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調用
public interface AddService { int add(int a, int b); }
@Service public class AddServiceImpl implements AddService { @Override public int add(int a, int b) { return a + b; } }
@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; } }