概述:

Spring Dubbo 是我自己写的一个基于spring-boot和dubbo,目的是使用Spring boot的风格来使用dubbo。(即可以了解Spring boot的启动过程又可以学习一下dubbo的框架)

项目介绍:

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

码云:  https://git.oschina.net/null_584_3382/spring-dubbo-parent

有兴趣的朋友可以一起交流学习。

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,例如:

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文件

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的都知道)

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服务

优点就是:spring boot风格

缺点就是:如果你不认spring boot,那么都是缺点

最新文章

  1. Sql Server系列:多表连接查询
  2. sql总结(3)---比较全
  3. HTML 5 音频(audio)
  4. 第18/24周 乐观并发控制(Optimistic Concurrency)
  5. 基础知识系列☞C#中数组Array、ArrayList和List三者的区别
  6. Python自动化 【第四篇】:Python基础-装饰器 生成器 迭代器 Json &amp; pickle
  7. 2016.02.02 JS事件
  8. 最近为毛喜欢上C/C++语言了
  9. 关于position的疑惑
  10. Apache Httpd通过mod_jk连接多个Tomcat
  11. websphere性能设置和日常维护
  12. A.indexOf(array[i])表达的含义
  13. Java设计模式之《单例模式》及应用场景
  14. HTTP Live Streaming 直播(iOS直播) 初识
  15. 如何用cmd通过sublime打开文件?
  16. [R] 繪圖 Par 函数
  17. Java8 Lambda和Stream的用法
  18. 下载从网页里面提取出来的图片(将url指向的图片下载并保存、从命名)
  19. 数据定义语句(DDL语句)
  20. Hyperledger Fabric v1.1.0安装记录(国内源版)

热门文章

  1. iOS使用StroryBoard页面跳转及传值
  2. 如何把函数都用promise方式实现?
  3. 【前端】:jQuery下
  4. 2017-2-28 C#基础 数组
  5. redis主从切换的集群管理
  6. 使用Nexus搭建Maven代理仓库
  7. PHP命名空间的概念与使用
  8. 3522: [Poi2014]Hotel
  9. 表格和echart二级联动,并通过点击echart高亮图标单元格
  10. Socket协议