動力節(jié)點-王媽媽Springboot教程(七)SpringBoot集成Dubbo

第七章 SpringBoot集成Dubbo

  • 官方下載地址

動力節(jié)點springboot資料

  • 視頻觀看地址

https://www.bilibili.com/video/BV1XQ4y1m7ex

7.1 看 SpringBoot繼承Dubbo的文檔

https://github.com/apache/dubbo-spring-boot-project/blob/master/README_CN.md

7.2 公共項目

獨立的maven項目: 定義了接口和數(shù)據(jù)類

public class Student implements Serializable {
    private static final long serialVersionUID = 1901229007746699151L;

    private Integer id;
    private String name;
    private Integer age;
}

public interface StudentService {

    Student queryStudent(Integer id);
}

image.gif

7.3 提供者

  • 創(chuàng)建SpringBoot項目

1) pom.xml

<dependencies>

   <!--加入公共項目的gav-->
   <dependency>
      <groupId>com.bjpowernode</groupId>
      <artifactId>022-interface-api</artifactId>
      <version>1.0.0</version>
   </dependency>

   <!--dubbo依賴-->
   <dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-spring-boot-starter</artifactId>
      <version>2.7.8</version>
   </dependency>

   <!--zookeeper依賴-->
   <dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-dependencies-zookeeper</artifactId>
      <version>2.7.8</version>
      <type>pom</type>
      <exclusions>
         <!-- 排除log4j依賴 -->
         <exclusion>
            <artifactId>slf4j-log4j12</artifactId>
            <groupId>org.slf4j</groupId>
         </exclusion>
      </exclusions>
   </dependency>
</dependencies>

image.gif

2)實現(xiàn)接口

/**
 * 使用dubbo中的注解暴露服務(wù)
 * @Component 可以不用加
 */
@DubboService(interfaceClass = StudentService.class,version = "1.0",timeout = 5000)
public class StudentServiceImpl implements StudentService {
    @Override
    public Student queryStudent(Integer id) {
        Student student  = new Student();
        if( 1001 == id){
            student.setId(1001);
            student.setName("------1001-張三");
            student.setAge(20);
        } else if(1002  == id){
            student.setId(1002);
            student.setName("#######1002-李四");
            student.setAge(22);
        }

        return student;
    }
}

image.gif

3)application.properties

#配置服務(wù)名稱 dubbo:application name="名稱"
spring.application.name=studentservice-provider

#配置掃描的包, 掃描的@DubboService
dubbo.scan.base-packages=com.bjpowernode.service

#配置dubbo協(xié)議
#dubbo.protocol.name=dubbo
#dubbo.protocol.port=20881

#注冊中心
dubbo.registry.address=zookeeper://localhost:2181

image.gif

4)在啟動類的上面

@SpringBootApplication
@EnableDubbo
public class ProviderApplication {

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

image.gif

7.4消費者

  • 創(chuàng)建SpringBoot項目

1) pom.xml

<dependencies>

   <!--加入公共項目的gav-->
   <dependency>
      <groupId>com.bjpowernode</groupId>
      <artifactId>022-interface-api</artifactId>
      <version>1.0.0</version>
   </dependency>

   <!--dubbo依賴-->
   <dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-spring-boot-starter</artifactId>
      <version>2.7.8</version>
   </dependency>

   <!--zookeeper依賴-->
   <dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-dependencies-zookeeper</artifactId>
      <version>2.7.8</version>
      <type>pom</type>
      <exclusions>
         <!-- 排除log4j依賴 -->
         <exclusion>
            <artifactId>slf4j-log4j12</artifactId>
            <groupId>org.slf4j</groupId>
         </exclusion>
      </exclusions>
   </dependency>
</dependencies>

image.gif

2)創(chuàng)建了Controller 或者 Service都可以

@RestController
public class DubboController {

    /**
     * 引用遠(yuǎn)程服務(wù)山橄, 把創(chuàng)建好的代理對象垮媒,注入給studentService
     */
    //@DubboReference(interfaceClass = StudentService.class,version = "1.0")

    /**
     * 沒有使用interfaceClass,默認(rèn)的就是 引用類型的 數(shù)據(jù)類型
      */
    @DubboReference(version = "1.0")
    private StudentService studentService;

    @GetMapping("/query")
    public String queryStudent(Integer id){
        Student student   = studentService.queryStudent(id);
        return "調(diào)用遠(yuǎn)程接口驾胆,獲取對象:"+student;
    }
}

image.gif

3)application.properties

#指定服務(wù)名稱
spring.application.name=consumer-application
#指定注冊中心
dubbo.registry.address=zookeeper://localhost:2181

image.gif

7.5 練習(xí)

使用的技術(shù): SpringBoot ,Dubbo, Redis, MyBatis

  • Student表:
在這里插入圖片描述
image.gif
CREATE TABLE student (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) COLLATE utf8_bin DEFAULT NULL,
phone varchar(11) COLLATE utf8_bin DEFAULT NULL,
age int(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
image.gif

1)注冊學(xué)生

phone必須唯一涣澡, 如果已經(jīng)存在了手機號, 注冊失敗的丧诺。

int addStudent(Student student);

返回值:int

1: 注冊成功

2 : 手機號已經(jīng)存在

name至少兩個字符入桂,

age 必須 大于 0

2) 查詢學(xué)生,根據(jù)id查詢驳阎,此學(xué)生抗愁。

先到redis查詢學(xué)生, 如果redis沒有此學(xué)生呵晚,從數(shù)據(jù)庫查詢蜘腌, 把查詢到的學(xué)生放入到redis。

后面再次查詢這個學(xué)生應(yīng)該從redis就能獲取到饵隙。

Student queryStudent(Integer id);

3)使用Dubbo框架撮珠, addStudent, queryStudent 是有服務(wù)提供者實現(xiàn)的。

消費者可以是一個Controller 金矛, 調(diào)用提供者的兩個方法芯急。 實現(xiàn)注冊和查詢。

4)頁面使用html和ajax驶俊,jquery娶耍。

在html頁面中提供 form 注冊學(xué)生, 提供文本框輸入id饼酿,進行查詢榕酒。

注冊和查詢都使用ajax技術(shù)。

html故俐,jquery.js都放到resources/static目錄中

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末想鹰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子药版,更是在濱河造成了極大的恐慌辑舷,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刚陡,死亡現(xiàn)場離奇詭異惩妇,居然都是意外死亡,警方通過查閱死者的電腦和手機筐乳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門歌殃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蝙云,你說我怎么就攤上這事氓皱。” “怎么了勃刨?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵波材,是天一觀的道長。 經(jīng)常有香客問我身隐,道長廷区,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任贾铝,我火速辦了婚禮隙轻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘垢揩。我一直安慰自己玖绿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布叁巨。 她就那樣靜靜地躺著斑匪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锋勺。 梳的紋絲不亂的頭發(fā)上蚀瘸,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音宙刘,去河邊找鬼苍姜。 笑死,一個胖子當(dāng)著我的面吹牛悬包,可吹牛的內(nèi)容都是我干的衙猪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼布近,長吁一口氣:“原來是場噩夢啊……” “哼垫释!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起撑瞧,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤棵譬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后预伺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體订咸,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡曼尊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了脏嚷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骆撇。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖父叙,靈堂內(nèi)的尸體忽然破棺而出神郊,到底是詐尸還是另有隱情,我是刑警寧澤趾唱,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布涌乳,位于F島的核電站,受9級特大地震影響甜癞,放射性物質(zhì)發(fā)生泄漏夕晓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一悠咱、第九天 我趴在偏房一處隱蔽的房頂上張望运授。 院中可真熱鬧,春花似錦乔煞、人聲如沸吁朦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逗宜。三九已至,卻和暖如春空骚,著一層夾襖步出監(jiān)牢的瞬間纺讲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工囤屹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留熬甚,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓肋坚,卻偏偏與公主長得像乡括,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子智厌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

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