##简介
Dubbox是当当网对阿里的Dubbo进行增强的一个分支。在使用springboot之后,我们发现很多配置并不一定要使用xml。这篇文章的目的是让你使用Dubbox时能像使用springboot的其它功能一样可以在application.properties中配置。
##基础整合
- 进入https://github.com/dangdangdotcom/dubbox ,将源码下载(当当网没有提交上maven仓库,所以不能直接从中央仓库依赖);打包进本地仓库
mvn clean install -DskipTests
- 添加Maven依赖
<!-- zookeeper --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.6</version></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency><!-- Dubbox --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.8.4</version></dependency><!-- springboot的注解处理器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>
- 添加配置类
@Configurationpublic class DubboConfig {@Bean@ConfigurationProperties(prefix="dubbo.application")public ApplicationConfig applicationConfig() {ApplicationConfig applicationConfig = new ApplicationConfig();return applicationConfig;}@Bean@ConfigurationProperties(prefix="dubbo.registry")public RegistryConfig registryConfig() {RegistryConfig registryConfig = new RegistryConfig();return registryConfig;}@Bean@ConfigurationProperties(prefix="dubbo.annotation")public AnnotationBean annotationBean() {AnnotationBean annotationBean = new AnnotationBean();return annotationBean;}@Bean@ConfigurationProperties(prefix="dubbo.protocol")public ProtocolConfig protocolConfig() {ProtocolConfig protocolConfig = new ProtocolConfig();return protocolConfig;}}
- 在application.properties中配置Dubbox属性
#应用名dubbo.application.name= #负责人dubbo.application.owner= #注册zookeeper的地址dubbo.registry.address=zookeeper://localhost:2181#扫包dubbo.annotation.package=com.yeauty.service#协议 (有 dubbo、rest、http、hessian、webservice) dubbo.protocol.name=dubbo#协议暴露服务的端口(Integer类型)dubbo.protocol.port=20880
- 提供者与消费者
提供者注解(实现类上):@Service(包:com.alibaba.dubbo.config.annotation.Service)@Component(包:org.springframework.stereotype.Component)消费者注解(对应Interface类型的属性上):@Reference(包:com.alibaba.dubbo.config.annotation.Reference)
- 注意!!!
springboot的开发热部署包一定要去掉!不然会出BUG
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope></dependency>
#####现在已经可以正常使用了,若想进行扩展,可以继续往下~
##指定序列化配置
- 添加Maven依赖
<dependency><groupId>com.esotericsoftware.kryo</groupId><artifactId>kryo</artifactId><version>2.24.0</version></dependency><dependency><groupId>de.javakaffee</groupId><artifactId>kryo-serializers</artifactId><version>0.26</version></dependency>
- application.properties中配置属性
#序列化方式(kryo是目前效率最高的)dubbo.protocol.serialization=kryo#序列化优化的实现类dubbo.protocol.optimizer=
- 添加序列化实现类
public class SerializationOptimizerImpl implements SerializationOptimizer {public Collection<Class> getSerializableClasses() {List<Class> classes = new LinkedList<Class>();return classes;}}
需要进行kryo序列化的类在这里add进list里面
详细可参考:https://dangdangdotcom.github.io/dubbox/serialization.html
###Dubbox的REST支持
- 添加Maven依赖
<dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxrs</artifactId><version>3.0.7.Final</version></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-client</artifactId><version>3.0.7.Final</version></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency><!-- 如果要使用json序列化 --><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jackson-provider</artifactId><version>3.0.7.Final</version></dependency><!-- 如果要使用xml序列化 --><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxb-provider</artifactId><version>3.0.7.Final</version></dependency>
- 在配置类中添加方法
@Bean@ConfigurationProperties(prefix="dubbo.protocol.rest")public ProtocolConfig protocolRestConfig() {ProtocolConfig protocolConfig = new ProtocolConfig();return protocolConfig;}
- application.properties中配置属性
dubbo.protocol.rest.name=restdubbo.protocol.rest.port=8082dubbo.protocol.rest.server=tomcat
更多属性配置和使用方法请参考:https://dangdangdotcom.github.io/dubbox/rest.html
######注:未经同意不得转载











