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. 添加配置類
    @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類型)
    dubbo.protocol.port=20880
  1. 提供者與消費(fèi)者
    提供者注解(實(shí)現(xiàn)類上):
    @Service(包:com.alibaba.dubbo.config.annotation.Service)
    @Component(包:org.springframework.stereotype.Component)
    
    消費(fèi)者注解(Interface上):
    @Reference(包:com.alibaba.dubbo.config.annotation.Reference)
  1. 注意!8斗恪烹玉!
    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)類
    dubbo.protocol.optimizer=
  1. 添加序列化實(shí)現(xiàn)類
    public class SerializationOptimizerImpl implements SerializationOptimizer {
    
        public Collection<Class> getSerializableClasses() {
            List<Class> classes = new LinkedList<Class>();
            
            return classes;
        }
    }

需要進(jìn)行kryo序列化的類在這里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. 在配置類中添加方法
    @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)系作者
  • 序言:七十年代末砸西,一起剝皮案震驚了整個(gè)濱河市叶眉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芹枷,老刑警劉巖衅疙,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸳慈,居然都是意外死亡饱溢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)走芋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绩郎,“玉大人潘鲫,你說(shuō)我怎么就攤上這事±哒龋” “怎么了溉仑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)状植。 經(jīng)常有香客問(wèn)我浊竟,道長(zhǎng),這世上最難降的妖魔是什么津畸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任振定,我火速辦了婚禮,結(jié)果婚禮上肉拓,老公的妹妹穿的比我還像新娘后频。我一直安慰自己,他們只是感情好暖途,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布徘郭。 她就那樣靜靜地躺著,像睡著了一般丧肴。 火紅的嫁衣襯著肌膚如雪残揉。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天芋浮,我揣著相機(jī)與錄音抱环,去河邊找鬼。 笑死纸巷,一個(gè)胖子當(dāng)著我的面吹牛镇草,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瘤旨,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼存哲!你這毒婦竟也來(lái)了因宇?” 一聲冷哼從身側(cè)響起祟偷,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎修肠,沒(méi)想到半個(gè)月后贺辰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饲化,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吃靠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒋川。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖撩笆,靈堂內(nèi)的尸體忽然破棺而出捺球,到底是詐尸還是另有隱情,我是刑警寧澤氮兵,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布歹鱼,位于F島的核電站,受9級(jí)特大地震影響弥姻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庭敦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秧廉。 院中可真熱鬧,春花似錦疼电、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至濒析,卻和暖如春啥纸,著一層夾襖步出監(jiān)牢的瞬間号杏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工主经, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庭惜,地道東北人罩驻。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓护赊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親节吮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容