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

Springboot集成dubbo完整过程(三)

时间:2023-04-12 14:14:39浏览次数:47  
标签:集成 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/17309584.html

相关文章

  • springboot -eclipse安装springboot插件注意事项
    1.下载包,本地安装,在线安装容易出问题;2.下载的包版本要和eclipse版本一致;3.mac电脑显示和隐藏文件的方法:shift+command+<或者>,分别是显示和隐藏;4.大概率碰到编译报错说找不到org.eclipse.debug.core的问题,第三条就是为了显示隐藏文件,删除/.metadata/.plugins目录下的org.eclipse.......
  • 动力节点王鹤SpringBoot3笔记——第七章 视图技术Thymeleaf
    7视图技术ThymeleafThymeleaf是一个表现层的模板引擎,一般被使用在Web环境中,它可以处理HTML,XML、JS等文档,简单来说,它可以将JSP作为JavaWeb应用的表现层,有能力展示与处理数据。Thymeleaf可以让表现层的界面节点与程序逻辑被共享,这样的设计,可以让界面设计人员、业......
  • 动力节点SpringBoot3笔记——视图技术Thymeleaf
    7视图技术ThymeleafThymeleaf是一个表现层的模板引擎,一般被使用在Web环境中,它可以处理HTML,XML、JS等文档,简单来说,它可以将JSP作为JavaWeb应用的表现层,有能力展示与处理数据。Thymeleaf可以让表现层的界面节点与程序逻辑被共享,这样的设计,可以让界面设计人员、业......
  • SpringBoot项目启动执行任务的几种方式
    1、直接在启动类下面调用方法@SpringBootApplicationpublicclassTestApplication{publicstaticvoidmain(String[]args){SpringApplication.run(TestApplication.class,args);System.out.println("在启动类添加初始下方法");}}2、使用@P......
  • p6spy 整合springboot
    1.导入pom<!--sql代理拦截,慢sql打印--><dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version></dependency>2.配置自定义日志importcom.p6spy.engine.common.P6Util;......
  • SpringBoot 集成 MybatisPlus 六——ActiveRecord 增、删、改
    1向表中插入记录1.1插入所有列在创建实体对象时,指定所有字段的内容,包括ID列。@TestpublicvoidtestAddUser(){Useruser=newUser(20,"成吉思汗","男","一代天骄");booleanres=user.insert();System.out.println(res);}调用MyBatisPlus时,后台执行的......
  • SpringBoot实现文件图片上传并转换为虚拟路径
    页面代码<!DOCTYPEhtml><htmllang="en"xmlns:th="http://www.thymeleaf.org"><head><metacharset="UTF-8"><title>Title</title></head><body><formaction="/putpic......
  • skywalking 监控 springboot项目
     部署探针打开idea开发工具Run-》EditConfigurations点击Modifyoptions-》AddVMoption-javaagent:E:\projectdeploy\apache-skywalking-apm-9.2.0\apache-skywalking-apm-bin\agent\skywalking-agent.jar-Dskywalking.agent.service_name=service-mylesson-jav......
  • Springboot集成dubbo完整过程(三)
    准备工作1,准备mysql服务环境2,准备redis服务环境3,准备zookeeper服务环境4,准备逆向生成bean的xml配置文件5,准备slf4j日志xml配置文件6,准备一个sql脚本1,搭建创建服务工程1,创建一个空的父工程,用来统一管理依赖2,创建一个interface接口工程,主要存放业务bean,接口类3,创建一......
  • #yyds干货盘点 springboot和vue搭建前后端项目实现员工的增删改查
    前言我是歌谣今天继续带来前后端项目的开发上次已经开发了部门管理,今天继续开发员工管理后端第一步empcontroller代码packagecom.itheima.controller;importcom.itheima.pojo.Emp;importcom.itheima.pojo.PageBean;importcom.itheima.pojo.Result;importcom.itheima.s......