dubbo系列之springboot 調(diào)試環(huán)境搭建(一)

前言

本文是dubbo系列的第一篇免猾,在正式講解dubbo的源碼之前织中,需要搭建一套dubbo的樣例苗缩,用于我們閱讀源碼以及理解dubbo的核心功能崭参,本文是以springboot

為基礎(chǔ)的,其他的通過xml配置的太麻煩了慰于。

版本說明

springboot starter : 0.1.1

dubbo版本: 2.6.2

新建項目

新建項目dubbo-provider钮科, dubbo-service,dubbo-interface婆赠,dubbo-consumer這四個項目绵脯,項目結(jié)構(gòu)如下

項目結(jié)構(gòu)圖.jpg

pom配置

dubbo-provider pom.xml

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
    </parent>

    <properties>
        <dubbo-spring-boot>1.0.0</dubbo-spring-boot>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.14.8</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

dubbo-service 和dubbo-consumer的pom文件相同 pom.xml

<dependencies>
        <!-- Spring Boot Dubbo 依賴 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.1.1</version>
        </dependency>

        <!-- Spring Boot Web 依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Spring Boot Test 依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <artifactId>dubbo-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
            <groupId>com.dubbo</groupId>
        </dependency>
    </dependencies>

dubbo-interface pom文件

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <testSource>${java.version}</testSource>
                    <testTarget>${java.version}</testTarget>
                </configuration>
            </plugin>
        </plugins>
    </build>

編碼

dubbo-service

啟動類

@SpringBootApplication
@DubboComponentScan("com.dubbo.provider.facade")
public class ProviderApplication {


    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class);
    }
}

application.yml文件

spring:
  application:
    name: dubbo-service
  profiles:
    active: dev
server:
  port: 7100
dubbo:
  application:
    name: dubbo-service
  registry:
    address: zookeeper://localhost:2181
  protocol:
    name: dubbo
    port: 20880

裝飾層

@Service 注解是**com.alibaba.dubbo.config.annotation.Service ** 的,不是spring提供的

/**
 * @Author 張云和
 * @Date 2018/9/11
 * @Time 14:48
 */
@Service
public class UserFacade implements UserFacadeService {


    @Resource
    private UserService userService;

    @Override
    public UserDTO getUser(Integer userId) {
        UserPO userPO = userService.getUser(userId);
        if(null==userPO){
            return null;
        }
        UserDTO userDTO = new UserDTO();
        userDTO.setUserId(userPO.getUserId());
        userDTO.setUserName(userPO.getUserName());
        return userDTO;
    }
}

UserFacadeService 為暴露出去的接口服務(wù)页藻,在dubbo-interface中進(jìn)行定義桨嫁,方便消費(fèi)者和生產(chǎn)者都能引用到

內(nèi)部service層

@Service  // 這個注解是spring的注解,不是dubbo的
public class UserServiceImpl implements UserService {

    @Override
    public UserPO getUser(Integer userId) {
        // 此處沒有從數(shù)據(jù)庫查詢
        UserPO userPO = new UserPO();
        userPO.setUserId(userId);
        userPO.setUserName("測試用戶:"+userId);
        userPO.setLastLoginTime(new Date());
        userPO.setPassword("password");
        return userPO;
    }
}

dubbo-consumer

啟動類

@SpringBootApplication
@DubboComponentScan("com.dubbo.consumer.service")
public class ConsumerApplication {


    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class);
    }

}

建立一個service類份帐,用來引用dubbo-service中提供的接口服務(wù)

@Service  // spring的
public class UserService implements UserFacadeService{

    @Reference  // dubbo的接口引用注解
    private UserFacadeService userFacadeService;

    @Override
    public UserDTO getUser(Integer userId) {

        return userFacadeService.getUser(userId);
    }
}

建立controller用來測試接口

@RestController
public class TestController {

    @Resource
    private UserService userService;

    @RequestMapping("getUser")
    public UserDTO getUser(Integer userId){

        return userService.getUser(userId);
    }
}

application.yml

spring:
  application:
    name: dubbo-consumer
  profiles:
    active: dev
server:
  port: 7101
dubbo:
  application:
    name: dubbo-consumer
  registry:
    address: zookeeper://localhost:2181
  protocol:
    name: dubbo
    port: 20880

測試

打開瀏覽器璃吧,訪問http://localhost:7101/getUser?userId=1 ,得到結(jié)果

{"userId":1,"userName":"測試用戶:1"}

本文搭建demo的項目結(jié)構(gòu)是按照我正式生產(chǎn)環(huán)境進(jìn)行搭的,所以跟其他博客上的項目結(jié)構(gòu)有些區(qū)別废境,不是那么簡單畜挨,有需要demo的可以私信我! 一起交流學(xué)習(xí)噩凹!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巴元,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子驮宴,更是在濱河造成了極大的恐慌逮刨,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堵泽,死亡現(xiàn)場離奇詭異修己,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)迎罗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門睬愤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纹安,你說我怎么就攤上這事尤辱。” “怎么了厢岂?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵光督,是天一觀的道長。 經(jīng)常有香客問我塔粒,道長可帽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任窗怒,我火速辦了婚禮映跟,結(jié)果婚禮上蓄拣,老公的妹妹穿的比我還像新娘。我一直安慰自己努隙,他們只是感情好球恤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荸镊,像睡著了一般咽斧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躬存,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天张惹,我揣著相機(jī)與錄音,去河邊找鬼岭洲。 笑死宛逗,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盾剩。 我是一名探鬼主播雷激,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼告私!你這毒婦竟也來了屎暇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤驻粟,失蹤者是張志新(化名)和其女友劉穎根悼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜀撑,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挤巡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屯掖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡襟衰,死狀恐怖贴铜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瀑晒,我是刑警寧澤绍坝,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站苔悦,受9級特大地震影響轩褐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜玖详,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一把介、第九天 我趴在偏房一處隱蔽的房頂上張望勤讽。 院中可真熱鬧,春花似錦拗踢、人聲如沸脚牍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诸狭。三九已至,卻和暖如春君纫,著一層夾襖步出監(jiān)牢的瞬間驯遇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工蓄髓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叉庐,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓双吆,卻偏偏與公主長得像眨唬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子好乐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

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