dubbo整合springboot最詳細入門教程


ZaELxe.jpg

說明

目前互聯網公司,大部分項目都是基於分布式,一個項目被拆分成幾個小項目,這些小項目會分別部署在不同的計算機上面,這個叫做微服務。當一台計算機的程序需要調用另一台計算機代碼的時候,就涉及遠程調用。此時dubbo就粉末登場了。

搭建工程

ZU6JWq.png

ZU6aOU.png

ZU6BTJ.png

idea新建工程后,刪除src文件夾,然后在gradle文件中輸入

buildscript {
    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        mavenCentral()
    }
    dependencies {
        classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.5.21.RELEASE'
    }
}


plugins {
    id 'java'
}
apply plugin: 'org.springframework.boot'
apply plugin: 'war'
group 'com.demoMuty'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
    mavenCentral()
}

dependencies {
    compile 'org.springframework.boot:spring-boot-starter-mail'
    compile 'org.springframework.boot:spring-boot-starter-thymeleaf'
    compile 'org.springframework.boot:spring-boot-starter-web'
    compile 'org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.4'
    compile 'com.alibaba.boot:dubbo-spring-boot-starter:0.1.0'
    compile 'com.101tec:zkclient:0.10'
//	developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtime 'mysql:mysql-connector-java'
    compile("com.baomidou:mybatis-plus-boot-starter:3.1.0")
    compile("com.baomidou:mybatis-plus-generator:3.1.1")
    compileOnly 'org.projectlombok:lombok'
    testCompile 'org.springframework.boot:spring-boot-starter-test'
}

如圖所示
ZUcM1x.png
boolean作為父工程,然后再見三個模塊
ZUcsHg.png

booleanone作為父模塊 booleanteo作為服務者模塊 booleanthree作為消費者模塊

添加dubbo.xml

然后在每個模塊新建com.test包,在包下新建啟動類
ZUgvJs.png

@SpringBootApplication
public class BaseApplication extends SpringBootServletInitializer {
}

然后在每個模塊的gradle文件中引入上面的依賴,然后在消費者模塊和生產者模塊的依賴中加入父模塊依賴,如圖

ZUg6sK.png

然后在booleantwo的生產者模塊的resource資源文件中加入dubbo文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        ">

    <!-- 提供方應用信息,用於計算依賴關系 -->
    <dubbo:application name="hello-world-app"/>

    <!-- 使用multicast廣播注冊中心暴露服務地址 -->
    <dubbo:registry address="zookeeper://localhost:2181"/>

    <!-- 用dubbo協議在20880端口暴露服務 -->
    <dubbo:protocol name="dubbo" port="20880"/>

    <!-- 聲明需要暴露的服務接口 -->
    <dubbo:service
            interface="com.test1.provider.DemoService"
            ref="demoService"
            group="hello-world-app"
            version="1.0.0"
    />
</beans>

在啟動類中加入注解

@ImportResource({"classpath:dubbo.xml"})

然后在booleantwo的消費者模塊的resource資源文件中加入dubbo文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        ">

<!-- 提供方應用信息,用於計算依賴關系 -->
<dubbo:application name="hello-world-app"/>

<!-- 使用multicast廣播注冊中心暴露服務地址 -->
<dubbo:registry address="zookeeper://localhost:2181"/>

<!-- 生成遠程服務代理,可以和本地bean一樣使用demoService -->
<dubbo:reference
        interface="com.test1.provider.DemoService"
        group="hello-world-app"
        version="1.0.0"
        id="demoService"/>
</beans>

在啟動類中加入注解

@ImportResource({"classpath:dubbo.xml"})

編寫dubbo代碼

在父模塊中寫dubbo接口

package com.test1.provider;

/**
 * @author buer
 * create 2019/7/2 22:13
 * description
 */
public interface DemoService {
    String sayHello(String name);
}

然后在生產者模塊中寫dubbo實現類

package com.test1.dubbo;

import com.test1.provider.DemoService;
import org.springframework.stereotype.Service;

/**
 * @author buer
 * create 2019/7/2 22:14
 * description
 */
@Service("demoService")
public class DemoServiceImpl implements DemoService {
    @Override
    public String sayHello(String name) {
        return "hello,dubbo"+name;
    }
}

然后在消費者模塊中寫dubbo調用


package com.test1.controller;

import com.test1.provider.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author boolean
 * Date: 2019/7/2 19:48
 * description:
 */
@RestController
public class he {
    @Autowired
    private DemoService demoService;

    @RequestMapping("/he")
    public String hello(){
        return "he";
    }

    @RequestMapping("/chen")
    public String hello1(){
        return demoService.sayHello("chen");
    }
}

啟動

最后添加war包
ZUXOGq.png
打開zkServer.cmd
ZUjMod.png
啟動信息
ZUXzsU.png
如果啟動有亂碼的話

回到idea軟件 打開tomcat的設置 找到VM options:,然后輸入
-Dfile.encoding=UTF-8

測試

ZUxRi9.png
代碼地址:

https://github.com/blackdogss/HelloWorld.git

公眾號

ZaAFFf.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM