##简介 Dubbox是当当网对阿里的Dubbo进行加强的一个分支。在使用springboot以后,咱们发现不少配置并不必定要使用xml。这篇文章的目的是让你使用Dubbox时能像使用springboot的其它功能同样能够在application.properties中配置。html
##基础整合java
mvn clean install -DskipTests
<!-- 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>
@Configuration public 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; } }
#应用名 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)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency>
#####如今已经能够正常使用了,若想进行扩展,能够继续往下~git
##指定序列化配置github
<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>
#序列化方式(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.htmlweb
###Dubbox的REST支持spring
<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; }
dubbo.protocol.rest.name=rest dubbo.protocol.rest.port=8082 dubbo.protocol.rest.server=tomcat
更多属性配置和使用方法请参考:https://dangdangdotcom.github.io/dubbox/rest.htmlapache
#####注:未经赞成不得转载json