SpringBoot整合Dubbox(无XML配置)

简介

Dubbox是当当网对阿里的Dubbo进行增强的一个分支。在使用springboot之后,我们发现很多配置并不一定要使用xml。这篇文章的目的是让你使用Dubbox时能像使用springboot的其它功能一样可以在application.properties中配置。

基础整合

  1. 进入https://github.com/dangdangdotcom/dubbox ,将源码下载(当当网没有提交上maven仓库,所以不能直接从中央仓库依赖);打包进本地仓库
mvn clean install -DskipTests
  1. 添加Maven依赖
        
        
            org.apache.zookeeper
            zookeeper
            3.4.6
        
        
            com.github.sgroschupf
            zkclient
            0.1
        
        
        
            com.alibaba
            dubbo
            2.8.4
        
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
  1. 添加配置类
    @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;
        }
    }
  1. 在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
  1. 提供者与消费者
    提供者注解(实现类上):
    @Service(包:com.alibaba.dubbo.config.annotation.Service)
    @Component(包:org.springframework.stereotype.Component)
    
    消费者注解(Interface上):
    @Reference(包:com.alibaba.dubbo.config.annotation.Reference)
  1. 注意!!!
    springboot的开发热部署包一定要去掉!不然会出BUG
        
            org.springframework.boot
            spring-boot-devtools
            runtime
        
现在已经可以正常使用了,若想进行扩展,可以继续往下~

指定序列化配置

  1. 添加Maven依赖
        
            com.esotericsoftware.kryo
            kryo
            2.24.0
        
        
            de.javakaffee
            kryo-serializers
            0.26
        
  1. application.properties中配置属性
    #序列化方式(kryo是目前效率最高的)
    dubbo.protocol.serialization=kryo
    #序列化优化的实现类
    dubbo.protocol.optimizer=
  1. 添加序列化实现类
    public class SerializationOptimizerImpl implements SerializationOptimizer {
    
        public Collection getSerializableClasses() {
            List classes = new LinkedList();
            
            return classes;
        }
    }

需要进行kryo序列化的类在这里add进list里面
详细可参考:https://dangdangdotcom.github.io/dubbox/serialization.html

Dubbox的REST支持

  1. 添加Maven依赖
        
            org.jboss.resteasy
            resteasy-jaxrs
            3.0.7.Final
        
        
            org.jboss.resteasy
            resteasy-client
            3.0.7.Final
        
        
            javax.validation
            validation-api
            1.1.0.Final
        
        
        
            org.jboss.resteasy
            resteasy-jackson-provider
            3.0.7.Final
        
        
        
            org.jboss.resteasy
            resteasy-jaxb-provider
            3.0.7.Final
        
  1. 在配置类中添加方法
    @Bean
    @ConfigurationProperties(prefix="dubbo.protocol.rest")
    public ProtocolConfig protocolRestConfig() {
        ProtocolConfig protocolConfig = new ProtocolConfig();
        return protocolConfig;
    }
  1. application.properties中配置属性
    dubbo.protocol.rest.name=rest
    dubbo.protocol.rest.port=8082
    dubbo.protocol.rest.server=tomcat

更多属性配置和使用方法请参考:https://dangdangdotcom.github.io/dubbox/rest.html

未经同意不得转载

你可能感兴趣的:(SpringBoot整合Dubbox(无XML配置))