微服務搭建(SpringBoot + Dubbo + Nacos)

1.項目接口

2. 編輯pom.xml和application.yml文件

2.1父工程

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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.10</version><relativePath/></parent><groupId>com.hanxun</groupId><artifactId>crmbe-service-backend</artifactId><packaging>pom</packaging><version>1.0</version><properties><java.version>1.8</java.version><spring.boot.version>2.7.10</spring.boot.version><dubbo.version>3.0.10</dubbo.version><nacos-client.version>2.1.1</nacos-client.version></properties><modules><module>crmbe-api</module><module>crmbe-consumer</module><module>crmbe-provider</module></modules><dependencyManagement><dependencies><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-web</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><!-- Dubbo核心依賴 --><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-registry-nacos</artifactId><version>${dubbo.version}</version><exclusions><!-- 排除適配層自帶的 Nacos 客戶端,避免版本沖突 --><exclusion><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></exclusion></exclusions></dependency><!-- Nacos 客戶端核心依賴 --><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>${nacos-client.version}</version></dependency><dependency><groupId>com.alibaba.spring</groupId><artifactId>spring-context-support</artifactId><version>1.0.11</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.1-jre</version></dependency></dependencies></dependencyManagement>
</project>

2.2 api 模塊

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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hanxun</groupId><artifactId>crmbe-service-backend</artifactId><version>1.0</version></parent><groupId>com.hanxun</groupId><artifactId>crmbe-api</artifactId><version>1.0</version><dependencies><dependency><groupId>com.alibaba.spring</groupId><artifactId>spring-context-support</artifactId></dependency></dependencies></project>

2.3 consumer 模塊

代碼結構:

dubbo注解:

Controller中使用 @DubboReference? 進行依賴注入

@RestController
@RequestMapping("/test")
public class UserController {@DubboReference(version = "1.0")private UserService userService;@GetMapping("/get")public Object get(String id){List<SysUser> userList= userService.getUserList();//        return "hello world !!!";return userList;}
}
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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hanxun</groupId><artifactId>crmbe-service-backend</artifactId><version>1.0</version></parent><groupId>com.hanxun</groupId><artifactId>crmbe-consumer</artifactId><version>1.0</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.hanxun</groupId><artifactId>crmbe-api</artifactId><version>1.0</version></dependency><!-- dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring.boot.version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
?yml文件
# 應用名稱
spring:application:name: crmbe-consumer
#  cloud:# Nacos配置中心
#    nacos:
#      server-addr: 127.0.0.1:8848 # Nacos 服務器地址
#      username: nacos # Nacos 賬號
#      password: nacos # Nacos 密碼
#      discovery: # 【配置中心】配置項
#        namespace: dev # 命名空間。這里使用 dev 開發環境
#        group: DEFAULT_GROUP # 使用的 Nacos 配置分組,默認為 DEFAULT_GROUP
#        metadata:
#          version: 1.0.0 # 服務實例的版本號,可用于灰度發布
#      config: # 【注冊中心】配置項
#        namespace: dev # 命名空間。這里使用 dev 開發環境
#        group: DEFAULT_GROUP # 使用的 Nacos 配置分組,默認為 DEFAULT_GROUPconfig:import:- optional:nacos:application.yml- optional:nacos:${spring.application.name}.yml# Dubbo配置
dubbo:application:name: crmbe-consumerlogger: slf4jprotocol:name: dubboport: -1registry:address: nacos://127.0.0.1:8848parameters:namespace: dev# 服務端口
server:port: 8082servlet:context-path: /crmbe-consumer

2.4 provider模塊

代碼結構:

dubbo 注解:

UserSeviceImpl 使用 @DubboService 注解 暴露服務

@DubboService(version = "1.0")
public class UserSeviceImpl implements UserService {@Overridepublic List<SysUser> getUserList() {List<SysUser> userlist = new ArrayList<SysUser>();SysUser user1 = new SysUser("張三",20, LocalDateTime.now());SysUser user2 = new SysUser("李四",30,LocalDateTime.now());SysUser user3 = new SysUser("王五",31,LocalDateTime.now());userlist.add(user1);userlist.add(user2);userlist.add(user3);userlist.add(user3);return userlist;}
}

Application 類加 @EnableDubbo

@EnableDubbo
@SpringBootApplication
public class CrmbeProviderApplication {public static void main(String[] args) {SpringApplication.run(CrmbeProviderApplication.class, args);System.out.println("--------------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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hanxun</groupId><artifactId>crmbe-service-backend</artifactId><version>1.0</version></parent><artifactId>crmbe-provider</artifactId><version>1.0</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.hanxun</groupId><artifactId>crmbe-api</artifactId><version>1.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><!-- 明確指定 Java 版本為 1.8 --><source>1.8</source><target>1.8</target><!-- 可選:指定編碼 --><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring.boot.version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
?yml文件
# 應用名稱
spring:application:name: crmbe-providerconfig:import:- optional:nacos:application.yml- optional:nacos:${spring.application.name}.yml# Dubbo配置
dubbo:application:name: crmbe-providerlogger: slf4jprotocol:name: dubboport: -1registry:address: nacos://127.0.0.1:8848parameters:namespace: devconfig-center:address: nacos://127.0.0.1:8848parameters:namespace: devscan:base-packages: com.hanxun# 服務端口
server:port: 8081

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/97536.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/97536.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/97536.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android中常見布局及其約束

0 布局的定義 布局可以理解為一種??容器??&#xff0c;用于??組織與排列界面上的控件??。 布局是一個相框&#xff0c;控件就是你要展示的照片。? 你&#xff08;布局規則&#xff09;決定這些照片怎么排列&#xff1a;是從上到下整齊放&#xff08;LinearLayout&am…

Rust語言能干什么

Rust 語言的應用范圍非常廣&#xff0c;幾乎覆蓋了現代軟件開發的全部領域。它最初以“系統級語言”身份出道&#xff0c;但現在已經遠遠超出了這個范疇。下面我從幾個關鍵方向給你梳理一下&#xff0c;Rust 到底能干什么&#xff0c;以及為什么在這些領域它特別有優勢。 1. 系…

只需一個設置就可以解決Microsoft Edge瀏覽器打不開網頁的問題

Microsoft Edge是一款功能強大的網絡瀏覽器&#xff0c;預裝在Windows 10、11系統中。通過這個簡單易懂的教程&#xff0c;學習如何修復Microsoft Edge瀏覽器打不開的問題。1、打開計算機找到C盤&#xff0c;雙擊打開&#xff1a;2、打開【用戶】?【Admin】?【AppData】?【L…

AI 應用 圖文 解說 (二) -- 百度智能云 ASR LIM TTS 語音AI助手源碼

文章的目的為了記錄AI應用學習的經歷&#xff0c;降低AI的入門難度。同時記錄開發流程和要點有些記憶模糊&#xff0c;防止忘記。也希望可以給看到文章的朋友帶來一些收獲。 相關鏈接&#xff1a; AI 應用 圖文 解說 (一) -- 百度智能云 實現 語音 聊天-CSDN博客 AI 應用 圖文 …

計算機Python畢業設計推薦:基于Django的博客網站設計與實現【python/大數據/深度學習/機器學習定制】

精彩專欄推薦訂閱&#xff1a;在下方主頁&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主頁&#xff1a;計算機畢設木哥&#x1f525; &#x1f496; 文章目錄 一、項目介紹二、…

當 AI 開始 “篩選” 信息:算法偏見會加劇認知鴻溝嗎?如何構建公平的 AI 生態?

AI 篩選信息的現狀與原理?在信息爆炸的時代&#xff0c;AI 篩選信息已成為各領域不可或缺的關鍵技術。在社交媒體平臺上&#xff0c;如抖音、小紅書等&#xff0c;AI 根據用戶的點贊、評論、瀏覽歷史等數據&#xff0c;精準推送用戶可能感興趣的內容&#xff0c;極大提升了用戶…

2023年IEEE IOTJ SCI1區TOP,動態環境下無人機目標覆蓋任務路徑規劃,深度解析+性能實測

目錄1.摘要2.問題模型3.算法設計4.結果展示5.參考文獻6.代碼獲取7.算法輔導應用定制讀者交流1.摘要 無人機&#xff08;UAV&#xff09;作為物聯網應用的重要工具&#xff0c;正廣泛應用于智能農業監測、智能交通監測等領域&#xff0c;并逐漸成為國內外研究熱點。然而&#x…

計算機視覺(四):二值化

二值化&#xff0c;就是將圖像從彩色或灰度模式轉換為只有兩種顏色&#xff08;通常是黑色和白色&#xff09;的模式。這個過程的本質是設定一個閾值 (Threshold)&#xff0c;將圖像中所有像素的灰度值與這個閾值進行比較。 基本原理 二值化的核心原理非常簡單&#xff1a; 灰度…

(二)設計模式(Command)

文章目錄項目地址一、設計模式1.1 Command Design1. 創建命令接口2. 創建支付的Command類3. CommandScheduler4. 使用1.2 Chain of Responsibility1. 接口創建2. 審批人3. 發起審批1.3 State Pattern1. 創建簡單的狀態機定義動作和狀態狀態機使用狀態機1.x Iterator1.x Observe…

現代C++性能陷阱:std::function的成本、異常處理的真實開銷

1. std::function 的成本 std::function 是一個通用的、類型擦除的函數包裝器&#xff0c;它非常方便&#xff0c;可以存儲和調用任何可調用對象&#xff08;函數、lambda、函數對象、bind表達式等&#xff09;。然而&#xff0c;這種靈活性是有代價的。 主要成本來源&#xff…

基于Spark的白酒行業數據分析與可視化系統的設計與實現

文章目錄有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主項目介紹一、項目背景與研究意義二、系統整體架構三、系統功能設計四、應用場景與價值五、項目特色與創新點六、總結與展望每文一語有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部…

織夢會員中心模板調用某個欄目名和欄目下文檔的辦法

大家在用到織夢dedecms時候&#xff0c;需要在會員中心模板調用欄目的名稱和鏈接&#xff0c;還有某個欄目下的文檔要怎么操作呢&#xff1f; 我們都知道&#xff0c;在會員中心模板&#xff0c;直接用dede:type或者dede:arclist標簽是不行的&#xff0c;在會員中心調用只能用p…

區塊鏈的法律定位:技術、工具還是資產?

高鵬律師首席數據官&#xff0c;數字經濟團隊創作AI輔助當我們談論區塊鏈時&#xff0c;我們在談論什么&#xff1f;是那串不可篡改的哈希值&#xff0c;是去中心化的信仰圖騰&#xff0c;還是藏在代碼背后的權利密碼&#xff1f;今天&#xff0c;我們不聊技術迭代的炫酷&#…

LeetCode每日一題,2025-8-31

dfs搜索解數獨&#xff0c;重點是如何判斷當前這位置的board[x][y]是否可以填數字num public class T37 {public static void main(String[] args) {char[][] board new char[][]{{5, 3, ., ., 7, ., ., ., .},{6, ., ., 1, 9, 5, ., ., .},{., 9, 8, ., ., ., ., 6, .},{8, …

Linux 進程信號學習筆記:從概念到實操

一、Linux 信號基本概念1.1 生活角度理解信號我們可以把進程比作等待快遞的人&#xff0c;信號就像快遞&#xff1a;識別信號&#xff1a;就像我們知道快遞來了該 怎么處理&#xff0c;進程對信號的識別是內核程序員預先編寫的內置特性&#xff0c;即使信號沒產生&#xff0c;進…

解決多種類潮濕敏感元器件的多溫度、多時長的排潮烘干

鎧德科技ESD烘箱針對復雜電路產品的排潮烘干需求&#xff0c;可通過以下技術路徑實現多品類元器件的高效兼容處理&#xff1a;多溫區獨立控制系統采用蜂窩式加熱模塊陣列&#xff0c;每個0.6m獨立溫區可設置1℃精度支持同時運行3種不同溫度曲線&#xff08;典型值&#xff1a;8…

obdumper和obloader遷移OceanBase業務庫(一):實施手冊

obdumper和obloader遷移OceanBase業務庫&#xff08;一&#xff09;&#xff1a;實施手冊導出前準備全庫&#xff08;模式&#xff09;數據導出全庫&#xff08;模式&#xff09;數據導入導入后檢查環境信息&#xff1a;OceanBase v4.3.5單機部署&#xff0c;MySQL租戶OBDUMPER…

SQLSugar 快速入門:從基礎到實戰查詢與使用指南

目錄 ?編輯 一、SQLSugar 簡介 二、SQLSugar 環境搭建 2.1 安裝 SQLSugar 2.1.1 通過 Visual Studio NuGet 圖形化界面安裝 2.1.2 通過 NuGet 命令行安裝 2.2 引用 SQLSugar 命名空間 三、SQLSugar 核心初始化配置 3.1 基礎初始化&#xff08;非 IOC 模式&#xff09…

Python與Rust語法對比詳解:從入門到精通

Python與Rust語法對比詳解&#xff1a;從入門到精通 前言 Python和Rust作為當今最受關注的編程語言&#xff0c;分別代表了動態類型和靜態類型語言的典型特征。本文將從語法層面深入對比這兩種語言&#xff0c;幫助開發者理解它們的設計理念和使用場景。1. 基礎語法結構 1.1 He…

視頻加水印_帶gif 加動態水印 gif水印 視頻浮動水印

如果你有一個視頻&#xff0c;你想給它加一個水印&#xff0c;讓水印浮動&#xff0c;而且加的還是 GIF 動態圖片水印&#xff0c;那么你可以使用這個工具。首先把你的兩個文件拖進來&#xff0c;然后點擊第三個按鈕。加好了&#xff0c;打開看一下&#xff0c;我們看到這個水印…