首页 > 其他分享 >Springboot集成dubbo完整过程(三)

Springboot集成dubbo完整过程(三)

时间:2023-04-18 15:02:30浏览次数:36  
标签:集成 dubbo Springboot INSERT INTO redis VALUES student NULL

准备工作

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 generatorConfiguration
        PUBLIC "-//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 Transfer

 Source Server         : student
 Source Server Type    : MySQL
 Source Server Version : 80024
 Source Host           : 127.0.0.1:3306
 Source Schema         : student 

 Target Server Type    : MySQL
 Target Server Version : 80024
 File Encoding         : 65001

 Date: 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

标签:集成,dubbo,Springboot,INSERT,INTO,redis,VALUES,student,NULL
From: https://www.cnblogs.com/fenxiangbe/p/17329572.html

相关文章

  • 万物皆可集成资源包!低代码集成系列一网打尽
    如何花最短的时间、用最少的成本解决客户的企业级应用定制问题?如何满足数据库集成、WebAPI集成、第三方软件集成等需求,在如今万物皆可盘的当下,低代码如何用积木大玩具的方式快速构建各种应用,实现“万物皆可集成”?如果你也面临以上两个问题,是时候体验低代码技术带给你的便捷与高效......
  • SpringBoot学习笔记
    一、Springboot简介目的:设计目的是用来简化Spring应用的初始搭建以及开发过程Spring程序和SpringBoot程序对比SpringBoot项目快速启动对SpringBoot项目打包(执行Maven构建指令package)执行启动命令(cmd中)java-jarspringboot.jar注:jar支持命令行启动需要依赖maven......
  • springboot统一响应实体封装+统一异常类管理
    前言:在日常前后端分离的接口开发过程中,需要我们按相应的格式给前端返回响应的数据,常见的方式就是我们后端自己封装一个包装类,每次返回给前端数据的时候都需要我们自己手动构建一。短时间内来看或许并没有什么,但是一旦接口量变大,我们每个接口都去构建返回值的话,那样就会浪费......
  • zabbix 集成 prometheus 数据
    一、概述Zabbix和Prometheus都是开源监控系统,它们具有不同的特点和优势,因此很多人希望将它们集成在一起,以便充分利用它们的功能。以下是将Zabbix和Prometheus集成的一些步骤:安装和配置Prometheus:在安装和配置Prometheus之前,需要先确定您要监控的目标。可以是主机、容器、服务等......
  • Flutter 集成 uni小程序(UniMPSDK)
    原文地址amoshk.top又是一段成为鸽子的日子,今天我们直接来上手一把,简单聊聊如何在Flutter中集成并使用小程序。在国内环境下,小程序盛行,随着功能的庞大,许多业务上也需要进行支持,帮助开发进行抽离(减少宿主APP频繁发版、方便形成生态、便于独立进行测试与漏洞修复等),使用者也......
  • Intel集成显卡如何校正色彩
    我们知道电脑使用久了就会出现各种各样的问题,其中最常见的就是显示器问题了,不少用户就曾遇到过显示器颜色不正常,那么当你也遇到Win7显示器颜色不正常怎么办,今天小编给大家整理了Intel集成显卡如何校正色彩,具体的一起来看看吧。Intel集成显卡校正色彩的方法1、集成显卡的校正也......
  • Java SpringBoot 7z 压缩、解压
    JavaSpringBoot7z压缩、解压cmd7z文件压缩7z压缩测试添加依赖<dependency><groupId>org.apache.commons</groupId><artifactId>commons-compress</artifactId><version>1.12</version></dependency><dependency......
  • Springboot使用RestTemplate发送Post请求postForEntity (application/json)的坑
    当使用RestTemplate进行http请求时,的确很方便,但是当需要进行post请求时遇到了坑1POST传递参数:采用LinkedMultiValueMap,不能使用HashMapStringurl='http://posturl';MultiValueMap<String,String>map=newLinkedMultiValueMap<String,String>();map.add(......
  • 灵活、快捷、低运维成本的数据集成方法:数据联邦架构
    在传统的企业数据运用中,企业使用多种系统,数据散落在各个存储设备中,数据分析需求往往是跨库的,数据入湖入仓在做分析会有安全问题,或影响业务系统性能。企业需要一种灵活、快捷、低运维成本的数据集成方法,就有了数据联邦架构。本文介绍数据联邦架构。  —数据联邦概述—在传......
  • AP6308PFM 升压型 2.6-6.5V 三节锂电池充电控制集成电路
    AP6308是一款工作于2.7V到6.5V的PFM升压型三节锂电池充电控制集成电路。AP6308采用恒流和准恒压模式(Quasi-CVTM)对电池进行充电管理,内部集成有基准电压源,电感电流检测单元,电池电压检测电路和片外场效应晶体管驱动电路等,具有外部元件少,电路简单等优点。当接通输入电源后,AP6308进入......