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.mzph.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;存在数据泄露…