当前位置: 首页 > news >正文

SpringCloud ------尚硅谷2024篇

什么是SpringCloud?

一、微服务架构编码Base工程模块构建

业务需求

微服务cloud整体聚合Maven父工程Project,

Maven父工程步骤

 New Project,聚合总父工程名字,字符编码, 注解生效激活, java编译版本选17,File Type过滤

1.导入pom文件, 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.atguigu.cloud</groupId>
    <artifactId>cloud2024</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
// 各组件的版本
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <hutool.version>5.8.22</hutool.version>
        <lombok.version>1.18.26</lombok.version>
        <druid.version>1.1.20</druid.version>
        <mybatis.springboot.version>3.0.2</mybatis.springboot.version>
        <mysql.version>8.0.11</mysql.version>
        <swagger3.version>2.2.0</swagger3.version>
        <mapper.version>4.2.3</mapper.version>
        <fastjson2.version>2.0.40</fastjson2.version>
        <persistence-api.version>1.0.2</persistence-api.version>
        <spring.boot.test.version>3.1.5</spring.boot.test.version>
        <!-- <spring.boot.version>3.2.0</spring.boot.version>
                <spring.cloud.version>2023.0.0</spring.cloud.version> -->
        <!-- 仅为了整合openfeign + alibaba sentinel的案例,降低版本处理下 -->
        <!-- <spring.boot.version>3.0.9</spring.boot.version>
                <spring.cloud.version>2022.0.2</spring.cloud.version> -->
        <!-- 仅为了整合openfeign + alibaba seata的案例,降低版本处理下 -->
        <spring.boot.version>3.1.7</spring.boot.version>
        <spring.cloud.version>2022.0.4</spring.cloud.version>
        <spring.cloud.alibaba.version>2022.0.0.0-RC2</spring.cloud.alibaba.version>
        <micrometer-tracing.version>1.2.0</micrometer-tracing.version>
        <micrometer-observation.version>1.12.0</micrometer-observation.version>
        <feign-micrometer.version>12.5</feign-micrometer.version>
        <zipkin-reporter-brave.version>2.17.0</zipkin-reporter-brave.version>
    </properties>
    <!--  欢迎报名尚硅谷学习互联网技术,有学习或发展问题zzyybs@126.com    -->
</project>
// dependencies 太长了,就不写了

dependencyManagementdependencies有什么区别?

pom中父声明,子类谁需要谁取,

dependencyManagement里只是声明依赖,并不实现引用,子项目需要显示声明依赖

Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用这个

dependencyManagement 元素中指定的版本号。

这样做的好处就是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,优势:

1

这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改 ;

2

另外如果某个子项目需要另外的一个版本,只需要声明version就可。

*     dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。

*   如果不在子项目中声明依赖,是不会从父项目中继承下来的,只有在子项目中写了该依赖项并且没有指定具体版本,才会从父项目中继承该项        且version和scope都读取自父pom;

*     如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

maven中跳过单元测试

1.配置

build > <!-- maven 中跳过单元测试  -->
    
 < plugins >
         < plugin >
             < groupId >org.apache.maven.plugins </ groupId >
             < artifactId >maven-surefire-plugin </ artifactId >
             < configuration >
                 < skip >true </ skip >
             </ configuration >
         </ plugin >
     </ plugins >
</ build >

2.工具

Mysql配置

Mysql5

# mysql5.7---JDBC四件套

jdbc.driverClass = com.mysql.jdbc.Driver

jdbc.url= jdbc:mysql://localhost:3306/db2024?useUnicode=true&characterEncoding=UTF-8&useSSL=false

jdbc.user = root

jdbc.password =123456

# Maven的POM文件处理 <dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.47</version>

</dependency>

Mysql8

# mysql8.0---JDBC四件套

jdbc.driverClass = com.mysql.cj.jdbc.Driver

jdbc.url= jdbc:mysql://localhost:3306/db2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true

jdbc.user = root

jdbc.password =123456

# Maven的POM <dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>8.0.11</version>

</dependency>

本次使用Mapper4生成DAO

mybatis-generator: http://mybatis.org/generator/
MyBatis通用Mapper4官网:https://github.com/abel533/Mapper
本次使用Mapper4
下一代:MyBatis 通用 Mapper5官网
https://github.com/mybatis-mapper/mapper

新建一个数据库

引入sql

DROP TABLE IF EXISTS `t_pay`;

CREATE TABLE `t_pay` (

  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

  `pay_no` VARCHAR(50) NOT NULL COMMENT '支付流水号',

  `order_no` VARCHAR(50) NOT NULL COMMENT '订单流水号',

  `user_id` INT(10) DEFAULT '1' COMMENT '用户账号ID',

  `amount` DECIMAL(8,2) NOT NULL DEFAULT '9.9' COMMENT '交易金额',

  `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认0不删除,1删除',

  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

  PRIMARY KEY (`id`)

) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='支付交易表';

INSERT INTO t_pay(pay_no,order_no) VALUES('pay17203699','6544bafb424a');

SELECT * FROM t_pay;

新建模块mybatis_generator2024

在父工程下面创建一个子模块,给子模块导入依赖

说明:这个工程只是为了暂时存储生成的代码,等到业务工程使用的时候,会将对应的类复制过去

父pom中会出现

<modules>
    <module>mbbatis_generator2024</module>
</modules>

说明这是子模块

子pom中 引入的依赖

<dependencies>

        <!--Mybatis 通用mapper tk单独使用,自己独有+自带版本号-->

        <dependency>

            <groupId>org.mybatis</groupId>

            <artifactId>mybatis</artifactId>

            <version>3.5.13</version>

        </dependency>

        <!-- Mybatis Generator 自己独有+自带版本号-->

        <dependency>

            <groupId>org.mybatis.generator</groupId>

            <artifactId>mybatis-generator-core</artifactId>

            <version>1.4.2</version>

        </dependency>

        <!--通用Mapper-->

        <dependency>

            <groupId>tk.mybatis</groupId>

            <artifactId>mapper</artifactId>

        </dependency>

        <!--mysql8.0-->

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

        </dependency>

        <!--persistence-->

        <dependency>

            <groupId>javax.persistence</groupId>

            <artifactId>persistence-api</artifactId>

        </dependency>

        <!--hutool-->

        <dependency>

            <groupId>cn.hutool</groupId>

            <artifactId>hutool-all</artifactId>

        </dependency>

        <!--lombok-->

        <dependency>

            <groupId>org.projectlombok</groupId>

            <artifactId>lombok</artifactId>

            <optional>true</optional>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

            <exclusions>

                <exclusion>

                    <groupId>org.junit.vintage</groupId>

                    <artifactId>junit-vintage-engine</artifactId>

                </exclusion>

            </exclusions>

        </dependency>

    </dependencies>

    <build>

        <resources>

            <resource>

                <directory>${basedir}/src/main/java</directory>

                <includes>

                    <include>**/*.xml</include>

                </includes>

            </resource>

            <resource>

                <directory>${basedir}/src/main/resources</directory>

            </resource>

        </resources>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

                <configuration>

                    <excludes>

                        <exclude>

                            <groupId>org.projectlombok</groupId>

                            <artifactId>lombok</artifactId>

                        </exclude>

                    </excludes>

                </configuration>

            </plugin>

            <plugin>

                <groupId>org.mybatis.generator</groupId>

                <artifactId>mybatis-generator-maven-plugin</artifactId>

                <version>1.4.2</version>

                <configuration>

                    <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>

                    <overwrite>true</overwrite>

                    <verbose>true</verbose>

                </configuration>

                <dependencies>

                    <dependency>

                        <groupId>mysql</groupId>

                        <artifactId>mysql-connector-java</artifactId>

                        <version>8.0.33</version>

                    </dependency>

                    <dependency>

                        <groupId>tk.mybatis</groupId>

                        <artifactId>mapper</artifactId>

                        <version>4.2.3</version>

                    </dependency>

                </dependencies>

            </plugin>

        </plugins>

    </build>
 

在子模块的resources下新建文件config.properties,将内容改成自己的:

#t_pay表包名
package.name=com.atguigu.cloud

# mysql8.0
jdbc.driverClass = com.mysql.cj.jdbc.Driver
jdbc.url= jdbc:mysql://localhost:3306/db2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
jdbc.user = root
jdbc.password =123456

在子模块的resources下新建文件generatorConfig.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>
    <properties resource="config.properties"/>

    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            <property name="caseSensitive" value="true"/>
        </plugin>

        <jdbcConnection driverClass="${jdbc.driverClass}"
                        connectionURL="${jdbc.url}"
                        userId="${jdbc.user}"
                        password="${jdbc.password}">
        </jdbcConnection>

        <javaModelGenerator targetPackage="${package.name}.entities" targetProject="src/main/java"/>

        <sqlMapGenerator targetPackage="${package.name}.mapper" targetProject="src/main/java"/>

        <javaClientGenerator targetPackage="${package.name}.mapper" targetProject="src/main/java" type="XMLMAPPER"/>

        <table tableName="t_pay" domainObjectName="Pay">
            <generatedKey column="id" sqlStatement="JDBC"/>
        </table>
    </context>
</generatorConfiguration>

双击运行maven中的插件,会自动生成代码

自动生成的

Rest通用Base工程构建

步骤:1. 建moudle,2.改POM,3.写YML,4.主启动,5.业务类

1.建moudle cloud-provider-payment8001

父POM中会改变

<modules>
    <module>mbbatis_generator2024</module>
    <module>cloud-provider-payment8001</module>
</modules>

2.改POM

<dependencies>
    <!--SpringBoot通用依赖模块-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!--SpringBoot集成druid连接池-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
    </dependency>
    <!-- Swagger3 调用方式 http://你的主机IP地址:5555/swagger-ui/index.html -->
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    </dependency>
    <!--mybatis和springboot整合-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
    </dependency>
    <!--Mysql数据库驱动8 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!--persistence-->
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>persistence-api</artifactId>
    </dependency>
    <!--通用Mapper4-->
    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper</artifactId>
    </dependency>
    <!--hutool-->
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
    </dependency>
    <!-- fastjson2 -->
    <dependency>
        <groupId>com.alibaba.fastjson2</groupId>
        <artifactId>fastjson2</artifactId>
    </dependency>
    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.28</version>
        <scope>provided</scope>
    </dependency>
    <!--test-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

3.写YML

server:
  port8001

# ==========applicationName + druid-mysql8 driver===================
spring:
  application:
    name: cloud-payment-service

  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true

    username: root
    password: 123456

# ========================mybatis===================
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.atguigu.cloud.entities
  configuration:
    map-underscore-to-camel-casetrue

4.主启动

package com.atguigu.cloud;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.atguigu.cloud.mapper")
public class Main8001 {
    public static void main(String[] args) {
       SpringApplication.run(Main8001.class,args);
    }
}

5.业务类

先把之前生成的entities和mapper的代码复制过来,这是目录结构

新建一个PayDTO,返回Pay中的特定数据,某些重要数据不返回到页面显示。

书写service层代码,

@Service
public class PayServiceImpl implements PayService {
    @Resource
    private PayMapper payMapper;
    @Override
    public int add(Pay pay) {
        return payMapper.insertSelective(pay);
    }

    @Override
    public int delete(Integer id) {
        return payMapper.deleteByPrimaryKey(id);
    }

    @Override
    public int update(Pay pay) {
        return payMapper.updateByPrimaryKeySelective(pay);
    }

    @Override
    public Pay getById(Integer id) {
        return payMapper.selectByPrimaryKey(id);
    }

    @Override
    public List<Pay> getAll() {
        return payMapper.selectAll();
    }
}

相关文章:

  • Go 语言标准库中path模块详细功能介绍与示例
  • 29、web前端开发之CSS3(六)
  • 基于大模型的pc版语音对话问答
  • SQL优化 | OceanBase是否遵循最左匹配原则?(三)
  • SpringBoot学习笔记3.27
  • 集成开发环境革新:IntelliJ IDEA与Cursor AI的智能演进
  • 1.1-站点差异\源码差异\数据存储差异\MVC模型
  • CSP-J/S冲奖第20天:选择排序
  • 蓝桥杯备考:拓扑排序+DFS(信息传递)
  • 数据库同步中间件PanguSync:如何跳过初始数据直接进行增量同步
  • Android生态大变革,谷歌调整开源政策,核心开发不再公开
  • 知识库中嵌入模型(Embedding Models)与重排序模型(Re-ranking Models)推荐工具与库
  • JVM 面经
  • docker run -p 5000:5000 my-flask-app
  • Docker Swarm 和 docker composer 需要 的yaml 文件有什么区别
  • 构建全智能生态,追觅携“技术复利”颠覆“大家电”
  • springboot 四层架构之间的关系整理笔记五
  • DexGrasp Anything:具有物理-觉察的普遍机器人灵巧抓取
  • T-SQL 语言基础:逆透视转换
  • CentOS 安装LAMP全过程 - 完整步骤与最佳实践
  • 利用社交网站做淘宝客/关键词是指什么
  • 企业平台网站建设/推广app最快的方法
  • 黑马程序员大学叫什么/长沙哪里有网站推广优化
  • qq是什么公司开发的/seo排名助手
  • 网站后台管理 源码/seo营销优化
  • 做的比较好的手机网站/百度推广用户注册