SpringBoot使用Dubbo的全過程(直連模式)
1.什么是Dubbo
Dubbo 是一款高性能、輕量級的 Java 分布式服務框架(RPC 框架),專門用來做 “微服務之間的遠程調用”。簡單說:A 服務 想調用 B 服務 的方法,像調用本地方法一樣方便,底層就是 Dubbo 幫你做通信。

Registry(注冊中心):注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。
Consumer(服務消費者):調用遠程服務的服務消費方,服務消費者在啟動時,向注冊中心訂閱自己所需的服務,服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
Monitor(監(jiān)控中心):服務消費者和提供者,在內存中累計調用次數(shù)和調用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。
Provider(服務提供者)暴露服務的服務提供方,服務提供者在啟動時,向注冊中心注
冊自己提供的服務。

核心作用:
(1)遠程服務調用(RPC):讓服務之間像調用本地方法一樣調用遠程接口,屏蔽網絡細節(jié)。
(2)服務注冊與發(fā)現(xiàn):服務啟動時把自己注冊到注冊中心(如 Nacos、ZooKeeper),調用方自動發(fā)現(xiàn)可用服務。
(3)負載均衡、容錯、限流:自動把請求分給多臺服務器,某臺掛了自動切換,保證系統(tǒng)高可用。
說明:本文只簡單搭建和使用Dubbo,后續(xù)文章會整合成分布式架構。
本文用的工具:
IDEA版本:2026.1
JDK版本:17
Spring Boot版本:3.x
Dubbo版本:3.3.0
本文先創(chuàng)建父模塊,然后分別創(chuàng)建 生產者 和 消費者
本文項目結構如下:
D:\Project\test\dubbo_demo
│
├── pom.xml # 父工程 Maven 配置
│
├── dubbo-api/ # 接口模塊
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ ── com.guo.service/
│ │ │ └── DogService.java
│ │ └── resources/
│ └── test/java/
│
├── dubbo-provider/ # 服務提供者模塊
│ ├── pom.xml
│ ── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com.guo/
│ │ │ ├── ProviderApplication.java
│ │ │ └── service/
│ │ │ └── DogServiceImpl.java
│ │ └── resources/
│ │ └── application.yml
│ └── test/java/
│
└── dubbo-consumer/ # 服務消費者模塊
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── com.guo/
│ │ ├── ConsumerApplication.java
│ │ └── controller/
│ │ └── DogController.java
│ └── resources/
│ └── application.yml
└── test/java/
2.搭建父模塊
2.1 創(chuàng)建父模塊項目
父模塊本身沒有其他代碼,主要用來管理子模塊(實際上就是一個空Maven項目)。

這里選擇“Java”,構建系統(tǒng)選擇“Maven”,JDK這里選17,然后點擊下面的創(chuàng)建。

創(chuàng)建完畢后,默認界面如下:

父工程沒有其他的代碼,只有一些依賴,所以這里直接把src文件刪除,右擊src文件夾,然后選擇“刪除”

然后,需要修改packaging,打開pom.xml,把下面的內容放到pom.xml中。(這行的意思是表示父工程,負責管理,不負責代碼)
<packaging>pom</packaging>

2.2 添加公共依賴
因為后面會創(chuàng)建子模塊,子模塊需要依賴,如果子模塊很多,需要填寫的依賴就很多。此時,我們可以在父模塊引入依賴,子模塊沿用父模塊的依賴即可。
打開父工程的pom.xml,然后添加spring boot、dubbo的一些依賴。
另外, 也增加了上面關于版本的定義,比如
<spring-boot.version>3.5.14</spring-boot.version>
然后有三種方式來下載依賴:
第一種:點擊下圖的1位置。
第二種:先點擊下圖的A,再點擊B。
第三種:雙擊下圖綠的的框。

下面的pom.xml中內容的參考(請參考下圖的依賴)。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.guo</groupId>
<artifactId>dubbo-demo2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-boot.version>3.5.14</spring-boot.version>
<dubbo.version>3.3.0</dubbo.version>
<jdk.version>17</jdk.version>
</properties>
<!-- 依賴管理:子模塊可直接繼承,無需重復引入 -->
<dependencyManagement>
<dependencies>
<!-- Spring Boot 核心依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring-boot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<!-- Dubbo 核心依賴 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 插件管理,子模塊繼承 -->
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>下載依賴后的參考界面如下:

父模塊無需編寫 Java 代碼,僅負責 依賴版本管理 和 子模塊關聯(lián),后續(xù)子模塊直接繼承父模塊的依賴配置,避免版本沖突。
3.搭建api部分
3.1 創(chuàng)建api模塊
api模塊只對外提供接口,所有調用關系都有api模塊來完成。

新建模塊這里選擇“Java”,名稱填寫“dubbo-api”,構建方式選Maven,JDK這里選17的版本,然后點擊“創(chuàng)建”

創(chuàng)建完了后項目如下:
可以看到,父級的pom文件中,自動增加了我們剛才創(chuàng)建的module

3.2 創(chuàng)建一個接口
我們創(chuàng)建一個Service接口。創(chuàng)建之前,先創(chuàng)建包。
右擊 dubbo-api模塊的java文件夾。
選擇“新建”—>“軟件包”。

包名可以參考下面這樣,可以寫成這樣的的目錄。
com.guo.service

注意:我們這里只是簡單的提供了一個service層, 實際開發(fā)中,可能還有其他的軟件包,比如
com.guo.entity等,這里不做演示。
創(chuàng)建完后,項目結構如下:

然后,右擊剛才創(chuàng)建的文件夾service,選擇"新建"—>“Java類”

這里創(chuàng)建的接口的名字假如是 DogService
注意:這里選的是“接口”,(interface ),不是類。然后按回車確認。

在里面增加一行代碼:
String sayHello(String name);
完整代碼參考如下:
package com.guo.service;
public interface DogService {
//一個接口
String sayHello(String name);
}
3.搭建 生成者(服務提供者)模塊
這里的生產者主要的功能是提供服務(數(shù)據(jù)等),往前要去實現(xiàn)前面的接口,往后要做一些查詢操作。本文只演示實現(xiàn)接口部分。
3.1 創(chuàng)建模塊
右擊父工程,選擇“新建”—>“模塊”

填寫相關的內容,然后點擊創(chuàng)建。

創(chuàng)建完后,項目結構如下:

3.2 添加依賴
這個模塊需要增加一些依賴,打開dubbo-provider模塊的pom.xml文件,增加下面的依賴

整體代碼參考如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.guo</groupId>
<artifactId>dubbo_demo</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>dubbo-provider</artifactId>
<dependencies>
<!--dubbo 與 spring-boot 整合包-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<!--springboot 啟動核心包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>3.3 添加實現(xiàn)類
這里主要實現(xiàn)api模塊的DogService接口。
先創(chuàng)建項目包。
右擊dubbo-provider中的java文件夾,選擇“新建”—>“軟件包”。

軟件包的包名參考為 com.guo.service,然后按回車確定。

右擊剛才創(chuàng)建的service文件夾,選擇“新建”—>“Java類”

實現(xiàn)類的名字是 DogServiceImpl

然后我們讓這個實現(xiàn)類去實現(xiàn)api模塊的接口。
參考代碼如下:
package com.guo.service;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;
@DubboService
@Component
public class DogServiceImpl implements DogService{
@Override
public String sayHello(String name) {
return "Hello, " + name + " (from direct provider)";
}
}注意,當你去實現(xiàn)DogService這個接口時候,報錯是正常的,

解決這個報錯很簡單,把鼠標放上去,會看到一個“更多操作”,然后點擊“更多操作"

在彈出的菜單里面點擊“添加對模塊xxxx的依賴”

此時,你會發(fā)現(xiàn),當前這個模塊的pom.xml文件中多了一個依賴(就是我們前面創(chuàng)建的dubbo-api模塊)。

3.4 創(chuàng)建啟動類
右擊dubbo-provider中的 “guo”這個文件夾(注意啟動類的位置)

類名為:ProviderApplication
然后按回車

啟動類的參考代碼如下:
package com.guo;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
System.out.println("Dubbo Provider started.");
}
}添加完代碼后,項目參考如下:

3.5 添加配置文件
右擊dubbo-provider中的resources文件夾,選擇“新建" ,然后點擊“文件”

這個配置文件的名字叫:application.yml
里面參考的配置內容如下:
server:
port: 8081
dubbo:
application:
name: dubbo-provider
protocol:
name: dubbo
port: 20880 # dubbo 服務端口,消費者直連時需要
qos:
enable: false添加后,項目內容如下:

4.搭建 消費者模塊
消費者模塊和生產者模塊非常類似。
4.1 創(chuàng)建模塊
右擊項目名,點擊“新建”—>“模塊”。

然后參考輸入下面的內容

創(chuàng)建完畢以后,項目結構如下:

4.2 添加依賴
打開dubbo-provider模塊的依賴文件,參考增加下面的內容

參考代碼:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.guo</groupId>
<artifactId>dubbo_demo</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>dubbo-consumer</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>4.3 添加Contorller
先新建軟件包,右擊java,選擇“新建”——>“軟件包”

參考輸入下面的內容:
com.guo.controller

然后,繼續(xù)右擊Controller,點擊“新建”,然后點擊“Java 類”

Controller的名字假定為:DogController

代碼參考如下:
package com.guo.controller;
import com.guo.service.DogService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DogController {
// 直連模式:直接指定 Provider 的地址和 Dubbo 端口
@DubboReference(url = "dubbo://127.0.0.1:20880")
private DogService dogService;
@GetMapping("/hello")
public String sayHello(@RequestParam("name") String name) {
return dogService.sayHello(name);
}
}
4.4 創(chuàng)建啟動類
右擊“guo”這個文件夾,選擇“新建”—>“Java類”

類名為:ConsumerApplication

代碼參考:
package com.guo;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
4.5 添加配置文件
右擊“resources”文件,選擇 “新建”—>“文件”

文件的名字為:
application.yml

內容參考如下:
server:
port: 8082
dubbo:
application:
name: dubbo-demo-consumer
# 不需要任何注冊中心配置
qos:
enable: false
5.啟動測試
先啟動生產者Provider模塊

再啟動消費者模塊(Consumer)

可以看到正常啟動:

然后打開瀏覽器,在瀏覽器中輸入下面的地址:
http://localhost:8082/hello?name=張三
看到下面內容,表示成功:

本文參考代碼如下:dubbo_demo.zip
鏈接: https://pan.baidu.com/s/1ScG54D-WSSHw6k33hnH7ig?pwd=29r2
到此這篇關于SpringBoot使用Dubbo的全過程(直連模式)的文章就介紹到這了,更多相關SpringBoot使用Dubbo內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- springboot使用dubbo和zookeeper代碼實例
- Springboot整合Dubbo+Nacos實現(xiàn)RPC調用的示例代碼
- 在SpringBoot中無縫整合Dubbo的實現(xiàn)過程
- springboot發(fā)布dubbo服務注冊到nacos實現(xiàn)方式
- SpringBoot整合Dubbo+Zookeeper實現(xiàn)RPC調用
- springboot-dubbo cannot be cast to問題及解決
- SpringBoot集成Dubbo啟用gRPC協(xié)議
- 基于SpringBoot的Dubbo泛化調用的實現(xiàn)代碼
- springboot?集成dubbo的步驟詳解
- spring/springboot整合dubbo詳細教程
相關文章
使用Spring的AbstractRoutingDataSource實現(xiàn)多數(shù)據(jù)源切換示例
這篇文章主要介紹了使用Spring的AbstractRoutingDataSource實現(xiàn)多數(shù)據(jù)源切換示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02
VSCode?Java項目JDK配置完整攻略指南(JDK版本切換不求人)
JDK是指Java軟件開發(fā)工具包,是Java編程語言的官方實現(xiàn),由Oracle公司提供,不斷更新和維護,這篇文章主要介紹了VSCode Java項目JDK配置(JDK版本切換不求人)的相關資料,需要的朋友可以參考下2026-05-05
Java JAR 啟動內存參數(shù)配置指南(從基礎設置到性能優(yōu)化)
在啟動 Java 可執(zhí)行 JAR 文件時,合理配置 JVM 內存參數(shù)是保障應用穩(wěn)定性和性能的關鍵,本文將系統(tǒng)講解如何通過命令行參數(shù)、環(huán)境變量等方式指定內存配置,并結合實際場景提供優(yōu)化建議,感興趣的朋友跟隨小編一起看看吧2025-11-11

