- 準備工作
- 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>
2,創建一個interface接口工程,主要存放業務bean,接口類
點擊菜單file-new-module
創建一個maven工程
輸入接口工程的名稱,選擇父工程為剛才新建的工程,點擊完成
3,創建一個消費者工程,主要是和web前端進行交互
點擊菜單file-new-module,選擇spring initializr,就是新建的spring boot工程
消費者需要和前端頁面進行交互,需要勾選web和thymeleaf集成,
4,創建一個服務提供者,給消費者提供業務服務,主要實現業務接口
點擊菜單file-new-module,選擇spring initializr,就是新建的spring boot工程
只需勾選web服務即可
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