Springboot集成dubbo完整過程(三)

  • 準備工作
    • 1,準備mysql服務環境
    • 2,準備redis服務環境
    • 3,準備zookeeper服務環境
    • 4,準備逆向生成bean的xml配置文件
    • 5,準備slf4j日志xml配置文件
    • 6,準備一個sql腳本
  • 1,搭建創建服務工程
    • 1,創建一個空的父工程,用來統一管理依賴
    • 2,創建一個interface接口工程,主要存放業務bean,接口類
    • 3,創建一個消費者工程,主要是和web前端進行交互
    • 4,創建一個服務提供者,給消費者提供業務服務,主要實現業務接口
  • 2,配置pom文件
    • 1,連接數據庫驅動
    • 2,springboot集成redis起步依賴
    • 3,springboot集成zookeeper依賴
    • 4,dubbo集成springboot起步依賴
    • 5,springboot集成mybatis起步依賴
    • 6,mybatis逆向生成插件
    • 7,自定義接口依賴
    • 8,slf4j日志依賴
    • 1,自定義接口依賴
    • 2,slf4j日志依賴
    • 3,springboot集成zookeeper依賴
    • 4,dubbo集成springboot起步依賴
  • 3,設置配置中心
  • 4,編寫業務代碼
  • 5,測試結果
  • 6,打包部署
  • 本文永久更新地址:
準備工作
1,準備mysql服務環境

使用docker創建一個mysql服務

docker run -d --name mysql -v ~/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql#下載并啟動mysql
docker exec -ti mysql bash#進入mysql
mysql -uroot -p123456#登錄mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;#開啟遠程訪問
FLUSH PRIVILEGES;
EXIT;
2,準備redis服務環境
docker run -itd -p 6379:6379 --name redis -v /home/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data redis redis-server /etc/redis/redis.conf#下載并開啟redis
docker exec -it redis /bin/sh#進入redis
redis-cli#登錄redis
config set requirepass 123456 #修改redis密碼
3,準備zookeeper服務環境
docker run -p 2181:2181 --name zookeeper --restart always -d zookeeper #下載并啟用zk

下載并啟用dubbo-admin,管理zookeeper

docker run -d --name dubbo-admin -v /Applications/workSpace/docker/dubbo/data:/data -p 7001:8080 -e admin.registry.address=zookeeper://172.xx.0.4:2181 -e admin.config-center=zookeeper://172.xx.0.4:2181 -e admin.metadata-report.address=zookeeper://172.xx.0.4:2181 --restart=always apache/dubbo-admin#下載并啟用
#172.xx.0.4這個ip就是安裝zookeeper后的服務ip
#docker查看容器的ip地址
#查看Docker的底層信息。
#docker inspect?會返回一個 JSON 文件記錄著 Docker 容器的配置和狀態信息
# 列出所有容器的IP地址
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
# 查看容器所有狀態信息;docker inspect NAMES
# 查看 容器ip 地址docker inspect --format='{{.NetworkSettings.IPAddress}}' ID/NAMES
# 容器運行狀態docker inspect --format '{{.Name}} {{.State.Running}}' NAMES
# 查看進程信息docker top NAMES
# 查看端口;(使用容器ID 或者 容器名稱)docker port ID/NAMES

瀏覽器輸入localhost:7001,訪問賬號密碼 root/root

4,準備逆向生成bean的xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><classPathEntry location="D:/mysql-connector-java-8.0.16.jar"/><context id="sqlserverTables" targetRuntime="MyBatis3"><!-- 生成的pojo,將implements Serializable -->
<!--        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>--><commentGenerator><!-- 是否去除自動生成的注釋 true:是 : false:否 --><property name="suppressAllComments" value="true" /></commentGenerator><!-- 數據庫鏈接URL、用戶名、密碼 --><jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/student"userId="root" password="root"><!--MySQL 不支持 schema 或者 catalog 所以需要添加這個--><!-- 不然會出現生成器把其他數據庫的同名表生成下來的問題 --><!-- 現象就是某個類中出現了數據庫表里面沒有的字段 --><property name="nullCatalogMeansCurrent" value="true"/></jdbcConnection><!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer true,把JDBC DECIMAL和 NUMERIC 類型解析為java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- 生成model模型,對應的包路徑,以及文件存放路徑(targetProject),targetProject可以指定具體的路徑,如./src/main/java,也可以使用“MAVEN”來自動生成,這樣生成的代碼會在target/generatord-source目錄下 --><!--<javaModelGenerator targetPackage="com.joey.mybaties.test.pojo" targetProject="MAVEN"> --><javaModelGenerator targetPackage="model"targetProject="D:/docker/www/dubbo-admin/interface/src/main/java"><property name="enableSubPackages" value="true" /><!-- 從數據庫返回的值被清理前后的空格 --><property name="trimStrings" value="true" /></javaModelGenerator><!--對應的mapper.xml文件 --><sqlMapGenerator targetPackage="mapper"targetProject="D:\docker\www\dubbo-admin\interface\src/main/resources"><property name="enableSubPackages" value="true" /></sqlMapGenerator><!-- 對應的Mapper接口類文件 XMLMAPPER/ANNOTATEDMAPPER--><javaClientGenerator type="ANNOTATEDMAPPER"targetPackage="com.springboot.provider.mapper"targetProject="src/main/java"><property name="enableSubPackages" value="true" /></javaClientGenerator><!-- 列出要生成代碼的所有表,這里配置的是不生成Example文件 --><table tableName="user" domainObjectName="User"enableCountByExample="false" enableUpdateByExample="false"enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"><property name="useActualColumnNames" value="false" /></table></context>
</generatorConfiguration>
5,準備slf4j日志xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds"><contextName>logback</contextName><property name="log.path" value="student.log" /><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!-- <filter class="com.example.logback.filter.MyFilter" /> --><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>debug</level></filter><encoder><pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><appender name="file"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern></rollingPolicy><encoder><pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern></encoder></appender><root level="debug"><appender-ref ref="console" /><appender-ref ref="file" /></root><logger name="com.example.logback" level="warn" /></configuration>
6,準備一個sql腳本
/*Navicat Premium Data TransferSource Server         : studentSource Server Type    : MySQLSource Server Version : 80024Source Host           : 127.0.0.1:3306Source Schema         : student Target Server Type    : MySQLTarget Server Version : 80024File Encoding         : 65001Date: 30/05/2022 22:20:32
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(10) DEFAULT NULL,`age` int DEFAULT NULL,`password` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,`role` varchar(10) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb3;-- ----------------------------
-- Records of student
-- ----------------------------
BEGIN;
INSERT INTO `student` VALUES (1, 'zhangsan', 18, '123456', NULL);
INSERT INTO `student` VALUES (3, 'wangwu', 14, '123456', NULL);
INSERT INTO `student` VALUES (4, '趙六', 34, '123456', NULL);
INSERT INTO `student` VALUES (5, '田七', 34, '123456', NULL);
INSERT INTO `student` VALUES (6, '111', 15, NULL, NULL);
INSERT INTO `student` VALUES (8, '張二麻子', 17, '123456', NULL);
INSERT INTO `student` VALUES (9, '張二麻子', 17, '123456', NULL);
INSERT INTO `student` VALUES (10, '????', 17, NULL, NULL);
INSERT INTO `student` VALUES (11, '????', 17, NULL, NULL);
INSERT INTO `student` VALUES (12, '張二麻子', 17, NULL, NULL);
INSERT INTO `student` VALUES (13, '張二麻子', 17, '123456', NULL);
INSERT INTO `student` VALUES (15, 'admin', 18, 'admin', 'admin');
INSERT INTO `student` VALUES (16, 'test002', 22, '123', '123');
INSERT INTO `student` VALUES (17, 'test003', 22, '123', '123');
INSERT INTO `student` VALUES (18, 'test003', 22, '123', '123');
INSERT INTO `student` VALUES (19, 'test004', 22, '123', '123');
INSERT INTO `student` VALUES (20, 'test005', 22, '123', '123');
INSERT INTO `student` VALUES (21, 'test006', 18, 'admin', 'admin');
INSERT INTO `student` VALUES (22, 'test007', 18, 'admin', 'admin');
INSERT INTO `student` VALUES (23, 'test0081', 18, '123', 'test005');
INSERT INTO `student` VALUES (24, 'test0082', 18, '123', 'test005');
COMMIT;SET FOREIGN_KEY_CHECKS = 1;
1,搭建創建服務工程
1,創建一個空的父工程,用來統一管理依賴

刪除src目錄,在pom文件中添加

<packaging>pom</packaging>

image-20220530223229941

2,創建一個interface接口工程,主要存放業務bean,接口類

點擊菜單file-new-module

image-20220530223417584

創建一個maven工程

image-20220530223620089

輸入接口工程的名稱,選擇父工程為剛才新建的工程,點擊完成

image-20220530223801051

image-20220530223953230

3,創建一個消費者工程,主要是和web前端進行交互

點擊菜單file-new-module,選擇spring initializr,就是新建的spring boot工程

image-20220530224059232

消費者需要和前端頁面進行交互,需要勾選web和thymeleaf集成,

image-20220530224352812

image-20220530224816821

4,創建一個服務提供者,給消費者提供業務服務,主要實現業務接口

點擊菜單file-new-module,選擇spring initializr,就是新建的spring boot工程

image-20220530225040988

只需勾選web服務即可

image-20220530225205472

2,配置pom文件

配置服務提供者的配置文件,一個服務提供者需要添加的依賴

1,連接數據庫驅動
2,springboot集成redis起步依賴
3,springboot集成zookeeper依賴
4,dubbo集成springboot起步依賴
5,springboot集成mybatis起步依賴
6,mybatis逆向生成插件
7,自定義接口依賴
8,slf4j日志依賴

配置消費者的配置文件,需要添加的依賴

1,自定義接口依賴
2,slf4j日志依賴
3,springboot集成zookeeper依賴
4,dubbo集成springboot起步依賴
3,設置配置中心
4,編寫業務代碼
5,測試結果
6,打包部署


本文永久更新地址:

https://www.fenxiangbe.com/p/Springboot集成dubbo完整過程(三).html

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

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

相關文章

【DeepSeek 】學習編程的利器:DeepSeek 使用指南

學習編程的利器&#xff1a;DeepSeek 使用指南 如果你正苦于如何開始學習 Python/R/Linux/HTML 語法&#xff0c;這個方法或許是你學習過程中的利器&#xff0c;又不用考慮請教真人&#xff0c;麻煩別人。 學習階段 第一階段&#xff1a;通讀語法書籍 第一步通讀一些相關語法…

【大模型篇】目前主流 AI 大模型體系全解析:架構、特點與應用

大家好,我是大 F,深耕AI算法十余年,互聯網大廠技術崗。分享AI算法干貨、技術心得。 歡迎關注《大模型理論和實戰》、《DeepSeek技術解析和實戰》,一起探索技術的無限可能! 閱讀完本文,您將知道:目前主流的大模型體系有哪些?及其架構的特點。 前言 在自然語言處理(NL…

電池管理系統(BMS)架構詳細解析:原理與器件選型指南

BMS&#xff08;電池管理系統&#xff09;架構詳細講解 從你提供的BMS&#xff08;Battery Management System&#xff09;架構圖來看&#xff0c;主要涉及到電池監控模塊、通信模塊、功率控制模塊等部分。下面我將詳細講解該架構的各個功能模塊及其工作原理。 1. 電池管理核…

決策樹(Decision Tree)基礎知識

目錄 一、回憶1、*機器學習的三要素&#xff1a;1&#xff09;*函數族2&#xff09;*目標函數2.1&#xff09;*模型的其他復雜度參數 3&#xff09;*優化算法 2、*前處理/后處理1&#xff09;前處理&#xff1a;特征工程2&#xff09;后處理&#xff1a;模型選擇和模型評估 3、…

洛谷 P3648 APIO2014 序列分割 題解

寫了挺多斜率優化的題目了&#xff0c;這道&#xff08;差點&#xff09;就速切了&#xff0c;原因還是單調隊列維護斜率的寫法出鍋。 題意 題目描述 你正在玩一個關于長度為 n n n 的非負整數序列的游戲。這個游戲中你需要把序列分成 k 1 k 1 k1 個非空的塊。為了得到 …

策略模式的C++實現示例

核心思想 策略模式是一種行為型設計模式&#xff0c;它定義了一系列算法&#xff0c;并將每個算法封裝在獨立的類中&#xff0c;使得它們可以互相替換。策略模式讓算法的變化獨立于使用它的客戶端&#xff0c;從而使得客戶端可以根據需要動態切換算法&#xff0c;而不需要修改…

Loki+Promtail+Grafana監控K8s日志

在現代云原生架構中&#xff0c;監控與日志管理對于確保系統穩定性和可靠性至關重要。Kubernetes&#xff08;K8s&#xff09;作為當下流行的容器編排平臺&#xff0c;對日志的監控管理需求尤為突出。Loki, Promtail 和 Grafana 構成了一套強大的日志監控解決方案&#xff0c;它…

Git 批量合并 Commit 并且保留之前的 Commit 快速實現的思路

文章目錄 需求Rebase / Pick / squashVim 的快速全局字符串替換 需求 我想把如下的提交 commit&#xff0c;變成一個 Commit&#xff0c;并且合并這些 Commit 的消息到一個節點 Rebase / Pick / squash 我合并到 5e59217 這個hash 上&#xff0c;這樣合并后會保留兩個 Commit…

基于海思soc的智能產品開發(芯片sdk和linux開發關系)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】 隨著國產化芯片的推進&#xff0c;在soc領域&#xff0c;越來越多的項目使用國產soc芯片。這些soc芯片&#xff0c;通常來說運行的os不是linux&…

將數據庫結構化數據整合到RAG問答中的方式

**將數據庫&#xff08;結構化數據&#xff09;接入 RAG&#xff08;Retrieval-Augmented Generation&#xff09;**的常見方式&#xff0c;并分別說明其實現方法、優點與缺點。 方式一&#xff1a;LLM 自動生成查詢語句&#xff08;SQL/NoSQL&#xff09;直接訪問數據庫 方法…

論壇系統測試報告

目錄 一、項目背景二、論壇系統測試用例思維導圖三、論壇系統測試3.1界面測試3.2登陸測試3.3主頁測試3.4個人中心測試 四、自動化測試腳本4.1配置驅動4.2創建瀏覽器類4.3功能測試4.3.1登陸測試4.3.2注冊測試4.3.3主頁測試4.3.4帖子編輯4.3.5運行主代碼 五、BUG分析六、測試總結…

python量化交易——金融數據管理最佳實踐——使用qteasy大批量自動拉取金融數據

文章目錄 使用數據獲取渠道自動填充數據QTEASY數據拉取功能數據拉取接口refill_data_source()數據拉取API的功能特性多渠道拉取數據實現下載流量控制實現錯誤重試日志記錄其他功能 qteasy是一個功能全面且易用的量化交易策略框架&#xff0c; Github地址在這里。使用它&#x…

后端架構模式之-BFF(Backend-For-Frontend)

Backend-for-Frontend&#xff08;BFF&#xff09; 的概念與意義 1. 什么是 Backend-for-Frontend&#xff08;BFF&#xff09;&#xff1f; Backend-for-Frontend&#xff08;簡稱 BFF&#xff09;是一種后端架構模式&#xff0c;它為特定的前端應用&#xff08;Web、移動端…

upload-labs靶場 1-21通關

目錄 1.Pass-01 前端繞過 分析 解題 2.Pass-02 服務器端檢測--修改IMME 分析 解題 3.Pass-03 黑名單繞過 分析 解題 4.Pass-04 .htaccess繞過 分析 解題 5.Pass-05 . .繞過和.user.ini繞過 分析 解題 6.Pass-06 大小寫繞過 分析 解題 7.Pass-07 空格繞過 分…

信貸風控系統架構設計

設計一個信貸風控系統需要綜合考慮業務需求、技術架構、數據治理、合規安全等多個維度。以下是從頂級Java架構師視角的系統設計方案&#xff0c;分模塊詳細說明&#xff1a; 一、系統架構設計原則 高可用性&#xff1a;7x24小時服務&#xff0c;多機房容災。低延遲&#xff1a…

Ubuntu20.04 在離線機器上安裝 NVIDIA Container Toolkit

步驟 1.下載4個安裝包 Index of /nvidia-docker/libnvidia-container/stable/ nvidia-container-toolkit-base_1.13.5-1_amd64.deb libnvidia-container1_1.13.5-1_amd64.deb libnvidia-container-tools_1.13.5-1_amd64.deb nvidia-container-toolkit_1.13.5-1_amd64.deb 步…

【工具】COME對比映射學習用于scRNA-seq數據的空間重構

介紹 單細胞RNA測序&#xff08;scRNA-seq&#xff09;能夠在單細胞分辨率下實現高通量轉錄組分析。固有的空間位置對于理解單細胞如何協調多細胞功能和驅動疾病至關重要。然而&#xff0c;在組織分離過程中&#xff0c;空間信息常常丟失。空間轉錄組學&#xff08;ST&#xf…

Idea配置注釋模板

一、配置類注釋模板 打開IDEA&#xff0c;打開settings(快捷鍵&#xff1a;Ctrl Alt s)&#xff0c;選擇Editor&#xff0c;找到File and Code Templates 這里以設置class文件為例&#xff0c;點擊Class&#xff0c;在右側配置以下內容 #if (${PACKAGE_NAME} && $…

pytorch高可用的設計策略和集成放大各自功能

在使用 PyTorch 編寫模型時,為確保模型具備高可用性,可從模型設計、代碼質量、訓練過程、部署等多個方面采取相應的方法,以下為你詳細介紹: 模型設計層面 模塊化設計 實現方式:將模型拆分成多個小的、獨立的模塊,每個模塊負責特定的功能。例如,在一個圖像分類模型中,可…

從開源大模型工具Ollama存在安全隱患思考企業級大模型應用如何嚴守安全紅線

近日&#xff0c;國家網絡安全通報中心通報大模型工具Ollama默認配置存在未授權訪問與模型竊取等安全隱患&#xff0c;引發了廣泛關注。Ollama作為一款開源的大模型管理工具&#xff0c;在為用戶提供便捷的同時&#xff0c;卻因缺乏有效的安全管控機制&#xff0c;存在數據泄露…