在SpringBoot中無(wú)縫整合Dubbo的實(shí)現(xiàn)過(guò)程
前言
微服務(wù)架構(gòu)已經(jīng)成為現(xiàn)代應(yīng)用開(kāi)發(fā)的熱門(mén)趨勢(shì),而Dubbo作為一款強(qiáng)大的分布式服務(wù)框架,與Spring Boot的結(jié)合是構(gòu)建高性能微服務(wù)應(yīng)用的理想選擇。就像拼裝一把鋒利的刀刃,讓我們一起揭開(kāi)Spring Boot整合Dubbo的神秘面紗,探索如何在分布式世界中獲得競(jìng)爭(zhēng)優(yōu)勢(shì)。
項(xiàng)目結(jié)構(gòu)
主項(xiàng)目(作為主pom)
<?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>fun.bo</groupId> <artifactId>dubbo-studys</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>dubbo-provider</module> <module>dubbo-interface</module> <module>dubbo-consumer</module> </modules> <properties> <java.version>1.8</java.version> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <dubbo-version>2.7.8</dubbo-version> <spring-boot.version>2.3.0.RELEASE</spring-boot.version> </properties> <dependencyManagement> <dependencies> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Apache Dubbo --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-bom</artifactId> <version>${dubbo-version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>${dubbo-version}</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>${dubbo-version}</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Dubbo Spring Boot Starter --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>${dubbo-version}</version> </dependency> <!-- Dubbo核心組件 --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> </dependency> <!--Spring Boot 依賴(lài) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot.version}</version> </dependency> <!-- Zookeeper客戶端框架 --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.0.1</version> </dependency> <!-- Zookeeper dependencies --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <version>${dubbo-version}</version> <type>pom</type> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project>
接口
package fun.bo.api; /** * @author todoitbo * @date 2024/1/12 */ public interface TestDubboService { String sayHello(String name); }
服務(wù)提供者
properties文件
# 服務(wù)端口 server.port=18081 # 應(yīng)用程序名稱(chēng) spring.application.name=dubbo-provider # Dubbo服務(wù)掃描路徑 dubbo.scan.base-packages=fun.bo # Dubbo 通訊協(xié)議 dubbo.protocol.name=dubbo # Dubbo服務(wù)提供的端口, 配置為-1,代表為隨機(jī)端口 默認(rèn)20880 dubbo.protocol.port=-1 ## Dubbo 注冊(cè)器配置信息 dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.registry.file = ${user.home}/dubbo-cache/${spring.application.name}/dubbo.cache dubbo.spring.provider.version = 1.0.0
實(shí)現(xiàn)類(lèi)
package fun.bo.iml; import fun.bo.api.TestDubboService; import org.apache.dubbo.config.annotation.DubboService; import org.springframework.beans.factory.annotation.Value; /** * @author todoitbo * @date 2024/1/12 */ @DubboService(version = "${dubbo.spring.provider.version}") public class TestDubboServiceImpl implements TestDubboService { @Override public String sayHello(String name) { return "hello " + name; } }
服務(wù)消費(fèi)者
properties
# 服務(wù)端口 server.port=18084 #服務(wù)名稱(chēng) spring.application.name=dubbo-spring-consumer #服務(wù)版本號(hào) dubbo.spring.provider.version = 1.0.0 #消費(fèi)端注冊(cè)器配置信息 dubbo.registry.address=zookeeper://127.0.0.1:2181 #dubbo.consumer.check=false dubbo.registry.file = ${user.home}/dubbo-cache/${spring.application.name}/dubbo.cache
接口層
package fun.bo.controller; import fun.bo.api.TestDubboService; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; /** * @author todoitbo * @date 2024/1/12 */ @RestController public class TestDubboController { @DubboReference(version = "${dubbo.spring.provider.version}") private TestDubboService testDubboService; @GetMapping("/test-dubbo/{name}") public String testDubbo(@PathVariable String name) { return testDubboService.sayHello(name); } }
實(shí)現(xiàn)效果圖
以上就是在SpringBoot中無(wú)縫整合Dubbo的實(shí)現(xiàn)過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot無(wú)縫整合Dubbo的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring的@RequestParam對(duì)象綁定方式
這篇文章主要介紹了Spring的@RequestParam對(duì)象綁定方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10Java輕量級(jí)權(quán)限認(rèn)證框架Sa-Token的使用
Sa-Token是一個(gè)輕量級(jí)Java權(quán)限認(rèn)證框架,本文就詳細(xì)的來(lái)介紹一下Java輕量級(jí)權(quán)限認(rèn)證框架Sa-Token的使用,主要解決:登錄認(rèn)證、權(quán)限認(rèn)證、Session會(huì)話、單點(diǎn)登錄、OAuth2.0、微服務(wù)網(wǎng)關(guān)鑒權(quán)等,感興趣的可以了解一下2022-03-03IDEA2023常用配置指南(JDK/系統(tǒng)設(shè)置等常用配置)
idea很強(qiáng)大,但是初次安裝默認(rèn)的有很多設(shè)置并不是滿足我們開(kāi)發(fā)的需要,下面這篇文章主要給大家介紹了關(guān)于IDEA2023常用配置(JDK/系統(tǒng)設(shè)置等常用配置)的相關(guān)資料,需要的朋友可以參考下2023-12-12idea2019導(dǎo)入maven項(xiàng)目中的某些問(wèn)題及解決方法
這篇文章主要介紹了idea2019導(dǎo)入maven項(xiàng)目中的某些問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08Java實(shí)現(xiàn)航空航班管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)航空航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07