1. 程式人生 > >dubbo整合springboot最詳細入門教程

dubbo整合springboot最詳細入門教程

說明

目前網際網路公司,大部分專案都是基於分散式,一個專案被拆分成幾個小專案,這些小專案會分別部署在不同的計算機上面,這個叫做微服務。當一臺計算機的程式需要呼叫另一臺計算機程式碼的時候,就涉及遠端呼叫。此時dubbo就粉末登場了。

搭建工程

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'
}

如圖所示

boolean作為父工程,然後再見三個模組

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

新增dubbo.xml

然後在每個模組新建com.test包,在包下新建啟動類

@SpringBootApplication
public class BaseApplication extends SpringBootServletInitializer {
}

然後在每個模組的gradle檔案中引入上面的依賴,然後在消費者模組和生產者模組的依賴中加入父模組依賴,如圖

然後在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包

開啟zkServer.cmd

啟動資訊

如果啟動有亂碼的話

回到idea軟體 開啟tomcat的設定 找到VM options:,然後輸入
-Dfile.encoding=UTF-8

測試


程式碼地址:

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

公眾號

相關推薦

dubbo整合springboot詳細入門教程

說明 目前網際網路公司,大部分專案都是基於分散式,一個專案被拆分成幾個小專案,這些小專案會分別部署在不同的計算機上面,這個叫做微服務。當一臺計算機的程式需要呼叫另一臺計算機程式碼的時候,就涉及遠端呼叫。此時dubbo就粉末登場了。 搭建工程 idea新建工程後,刪除src資料夾,然後在grad

mfc詳細入門教程

以下是我從其他網站中學的內容,後有相應的網站學習連結地址,可供學習1.選擇選單項File->New->Project,彈出“New Project”對話方塊。 2.左側面板中Installed Templated的Visual C++下選擇MFC,中

數據庫詳細入門教程

刪除數據 表結構 arch 刪除數據庫 1.2 tro host 顯示 唯一性約束 創建用戶:CREATE USER [email protected]/* */ IDENTIFIED BY ‘密碼‘ 主機名可以為空,為空默認為%權限,表示所有主機可連接

ant使用指南詳細入門教程

zip壓縮 文件名 進行 擁有 alt temp 所有 書寫 env 一、概述 ant 是一個將軟件編譯、測試、部署等步驟聯系在一起加以自動化的一個工具,大多用於Java環境中的軟件開發。在實際軟件開發中,有很多地方可以用到ant。 開發環境: 復制代碼代碼如下:

IDEA建立Spring MVC Hello World 詳細入門教程

solver 也有 就是 內容 彈出 開頭 web-inf 我們 utf 引子,其實從.NET轉Java已經有幾個月時間了,項目也做了不少,但是很多配置都是根據公司模板或者網上教程比忽略畫瓢,對其中最簡單的配置和設置並不完全理解,依舊是小白用戶。最近項目不忙,重新梳理了一下

XX-NET史上詳細完整教程

偽造 不用 app 分享圖片 AS 版本 firefox 配置過程 自動切換 前言   XX-NET,系GAE類代理,即通過可用Google ip連接Google App Engine項目,然後把所有tcp請求發送給Google App Engine,最終實現科學式網絡的

Python為何這麽牛逼?不就是有很多的模塊和框架嗎?詳細教程

int imp 開發者 濾鏡 In 易用 ons -c 通過 概述 模塊簡述 Python __name__ 模塊優點 提高了代碼的可維護性 提高了代碼的服用度, 當一個模塊完畢, 可以被多個地方引用 可避免函數名和變量名的沖突 argv : 獲取命令行參

Dubbo整合SpringBoot

spring 結構 body map logs main protoc tro width 目前的dubbo已支持和springboot集成,還是之前的例子,這次我們通過springboot容器來實現。借此了解一下基於springboot容器啟動的dubbo的配置及使用。

webpack4.x詳細入門指南

api 包括 顯示 [] 靈活 public 手動 ppi webkit 前言 本文主要從webpack4.x入手,會對平時常用的Webpack配置一一講解,各個功能點都有對應的詳細例子,所以本文也比較長,但如果你能動手跟著本文中的例子完整寫一次,相信你會覺得Webpa

git詳細入門操作

轉載原文連結:https://gitbook.cn/m/mazi/article/5bb88acc3b8181150e6abb93?utm_source=weixinNotification  隨著秋招進行中,諸多大學生以及轉行做 IT 的技術者開始應聘工作,然而當他們面試被問到 Gi

java多執行緒程式設計詳細入門教程

##1、概念      執行緒是jvm排程的最小單元,也叫做輕量級程序,程序是由執行緒組成,執行緒擁有私有的程式技術器以及棧,並且能夠訪問堆中的共享資源。這裡提出一個問題,為什麼要用多執行緒?有一下幾點,首先,隨著cpu核心數的增加,計算機硬

java執行緒池詳細入門教程即原始碼解析

##1、執行緒池概念      執行緒池是執行緒的集合,通過執行緒池我們不需要自己建立執行緒,將任務提交給執行緒池即可。為什麼要使用執行緒池,首先,使用執行緒池可以重複利用已有的執行緒繼續執行任務,避免執行緒在建立和銷燬時造成的消耗。其次,由

CoreSeek詳細入門教程

centos6作業系統 Coreseek 是一款中文全文檢索/搜尋軟體,以GPLv2許可協議開源釋出,基於Sphinx研發並獨立釋出,專攻中文搜尋和資訊處理領域,適用於行業/垂直搜尋、論壇/站內搜尋、資料庫搜尋、文件/文獻檢索、資訊檢索、資料探勘等應用場景,使用者可以免費下載使用。 co

史上詳細git教程

閱讀目錄 題外話 雖然這個標題很驚悚,不過還是把你騙進來了,哈哈~各位看官不要著急,耐心往下看 Git是什麼 Git是目前世界上最先進的分散式版本控制系統。 SVN與Git的最主要的區別 SVN是集中式版本控制系統,版本庫是集中放在中央伺服器的,而

unittest詳細教程(文末附視訊資料)

一、什麼是unittest unittest是Python單元測試框架,類似於JUnit框架。 unittest中有4個重要的概念:test fixture, test case, test suite, test runner Testcase: 一個TestCas

webpack4.x詳細入門講解

前言 Webpack其實沒有想象中的那麼難,用得多了,其實套路都一樣,本文主要是針對webpack4.x版本,會對平時常用的Webpack配置一一講解,所以本文也比較長,但如果你能動手跟著本文中的例子完整寫一次,相信你會覺得Webpack也不過如此。 一、什麼是webpack,為什麼使用它? 1.1 什麼是

以太坊詳細入門教程

1.以太坊的安裝、私有鏈創世區塊搭建、私有鏈節點的加入 安裝以太坊: $ apt-get install software-properties-common $ add-apt-repository -y ppa:ethereum/ethereum $ ap

Dubbo——整合SpringBoot

一、建立服務提供者的SpringBoot專案  1、在Eclipse中new一個Spring Starter Project(Eclipse中建立SpringBoot的快捷方式,等價於idea中的Spring Initializr),無需新增模組  2、在po

歸併排序——史上詳細圖解教程!!!

題目大意:把n個數,分成若干份,然後每一份暴力排序一下,然後遞迴地合起來。 為什麼要這樣做?這樣有個球用? 核心問題就在於,每兩份之間你是怎麼合起來的。 我們舉個例子。 一個比較呆萌的思路就是,2二分插入,形成新的序列,再繼續用4插入。。。這樣的話,確實沒什麼球用。

gulp詳細入門教程-gulp demo download

簡介: gulp是前端開發過程中對程式碼進行構建的工具,是自動化專案的構建利器;她不僅能對網站資源進行優化,而且在開發過程中很多重複的任務能夠使用正確的工具自動完成;使用她,我們不僅可以很愉快的編寫程式碼,而且大大提高我們的工作效率。 gulp是基於Nodejs的自動任務執行器, 她能自動化地完成