SpringBoot整合Dubbox(無(wú)XML配置)

簡(jiǎn)介

Dubbox是當(dāng)當(dāng)網(wǎng)對(duì)阿里的Dubbo進(jìn)行增強(qiáng)的一個(gè)分支。在使用springboot之后,我們發(fā)現(xiàn)很多配置并不一定要使用xml。這篇文章的目的是讓你使用Dubbox時(shí)能像使用springboot的其它功能一樣可以在application.properties中配置。

基礎(chǔ)整合

  1. 進(jìn)入https://github.com/dangdangdotcom/dubbox ,將源碼下載(當(dāng)當(dāng)網(wǎng)沒(méi)有提交上maven倉(cāng)庫(kù),所以不能直接從中央倉(cāng)庫(kù)依賴);打包進(jìn)本地倉(cāng)庫(kù)
mvn clean install -DskipTests
  1. 添加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>
  1. 添加配置類(lèi)
    @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屬性
    #應(yīng)用名
    dubbo.application.name= 
    #負(fù)責(zé)人
    dubbo.application.owner= 
    #注冊(cè)zookeeper的地址
    dubbo.registry.address=zookeeper://localhost:2181
    #掃包
    dubbo.annotation.package=com.yeauty.service
    #協(xié)議 (有 dubbo、rest、http、hessian、webservice) 
    dubbo.protocol.name=dubbo
    #協(xié)議暴露服務(wù)的端口(Integer類(lèi)型)
    dubbo.protocol.port=20880
  1. 提供者與消費(fèi)者
    提供者注解(實(shí)現(xiàn)類(lèi)上):
    @Service(包:com.alibaba.dubbo.config.annotation.Service)
    @Component(包:org.springframework.stereotype.Component)
    
    消費(fèi)者注解(Interface上):
    @Reference(包:com.alibaba.dubbo.config.annotation.Reference)
  1. 注意?。。?br> springboot的開(kāi)發(fā)熱部署包一定要去掉!不然會(huì)出BUG
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
現(xiàn)在已經(jīng)可以正常使用了,若想進(jìn)行擴(kuò)展,可以繼續(xù)往下~

指定序列化配置

  1. 添加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>
  1. application.properties中配置屬性
    #序列化方式(kryo是目前效率最高的)
    dubbo.protocol.serialization=kryo
    #序列化優(yōu)化的實(shí)現(xiàn)類(lèi)
    dubbo.protocol.optimizer=
  1. 添加序列化實(shí)現(xiàn)類(lèi)
    public class SerializationOptimizerImpl implements SerializationOptimizer {
    
        public Collection<Class> getSerializableClasses() {
            List<Class> classes = new LinkedList<Class>();
            
            return classes;
        }
    }

需要進(jìn)行kryo序列化的類(lèi)在這里add進(jìn)list里面
詳細(xì)可參考:https://dangdangdotcom.github.io/dubbox/serialization.html

Dubbox的REST支持

  1. 添加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>
  1. 在配置類(lèi)中添加方法
    @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

更多屬性配置和使用方法請(qǐng)參考:https://dangdangdotcom.github.io/dubbox/rest.html

未經(jīng)同意不得轉(zhuǎn)載
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容