Skip to content

1. 模块化概念

  • 模块化是⼀种结构化的软件设计⽅法,通过将⼀个软件系统划分为多个相互独⽴功能完整且紧密结合的⼦系统,并通过各个⼦系统间的交互,来完成整体的⽬ 标。
  • 模块化设计能够使⼀个复杂的系统被分割成多个易于管理、可维护的⼦系统,⽽且每个⼦系统⼜可以单独开发、测试、部署、扩展、升级`。
  • 模块化设计的基本原则包括:
    • 分⽽治之:通过划分模块的⽅式,将⼀个复杂系统拆分成多个⼩的、独⽴的、可重复使⽤的单元,每个单元都有明确的功能定位、输⼊输出接⼝、数据格式、资源约束等。
    • 可复⽤性:每个模块都可以独⽴地进⾏开发、调试、测试、部署、扩展、升级。
    • 可配置性:系统中的各个模块之间可以灵活地进⾏组合、编排、嵌套,以实现不同的应⽤场景。
    • 透明性:模块之间的通信接⼝及数据格式应该是开放的,这样可以保证各个模块之间的数据⼀致性和完整性。
    • 灵活性:模块的开发、调试、测试、部署可以由不同的团队或个⼈独⽴完成,并不依赖于整个系统的开发进度和进度发布频率。

2. 创建工程


父工程

  • 创建: spring-boot-example-06-module 父类工程项目
  • 添加: pom.xml
  • 结构说明: 主要以 CRM 项目为例,主要分为 2 大服务, 一个后台管理前台系统
    • module-api:【通用接口 API】模块
    • module-manager: 【后台管理】工程
    • module-website: 【前台系统】工程
xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.13</version>
  </parent>

  <groupId>com.calvin</groupId>
  <artifactId>spring-boot-example-06-module</artifactId>
  <version>${module.version}</version>
  <!-- 打包方式为 pom -->
  <packaging>pom</packaging>


  <description>Spring Boot 模块化开发-模拟CMS项目工程</description>

  <properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring-boot.version>2.6.13</spring-boot.version>
    <hutool.version>5.8.23</hutool.version>
    <!-- 项目版本号 -->
    <module.version>1.0.0-SNAPSHOT</module.version>
  </properties>

  <modules>
    <!--【通用API】模块 -->
    <module>module-api</module>
    <!--【后台系统】模块 -->
    <module>module-manager</module>
    <!--【前台系统】模块 -->
    <module>module-website</module>
  </modules>

  <dependencies>

    <!-- START: Web Starter 启动器 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- END: Web Starter 启动器 -->

    <!-- START: 单元、接口测试 TEST -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <!-- END: 单元、接口测试 TEST -->

    <!-- START: mybatis-plus -->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.5.4.1</version>
    </dependency>

    <!-- mysql 驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- END: mybatis-plus -->

    <!-- START: devtools 热部署 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>
    <!-- END: devtools 热部署 -->

    <!-- START: actuator 监视器 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!-- END:  actuator 监视器 -->

    <!-- START: hutool 通用工具 -->
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>${hutool.version}</version>
    </dependency>
    <!-- END: hutool 通用工具 -->

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
    </dependency>

  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring-boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

【通用接口 API】模块

  • 新建: module-api 模块
  • 添加: pom.xml
  • 结构说明:
    • 该模块用于提供各服务业务功能API-【注入/调用】
    • 新建一些通用的包: abstract 抽象包configuration 配置包constant 常量包 等通用的包。
xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.calvin</groupId>
        <artifactId>spring-boot-example-06-module</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <artifactId>module-api</artifactId>
    <description>Spring Boot 模块化开发 => API模块</description>

</project>
java
package com.calvin.module.api;

import com.calvin.module.api.pojo.SysUserRequest;
import com.calvin.module.api.pojo.dto.UserDTO;

/**
 * 系统用户-API
 *
 * @author Calvin
 * @date 2024/1/31
 * @since v1.0.0
 */
public interface SysUserApi {

    /**
     * 查询-单个用户信息
     *
     * @param request 请求
     * @return {@link UserDTO}
     */
    UserDTO findOne(SysUserRequest request);

}
java
package com.calvin.module.api;

import com.calvin.module.api.pojo.dto.UserDTO;

/**
 * 登录-API
 *
 * @author Calvin
 * @date 2024/1/31
 * @since v1.0.0
 */
public interface LoginApi {

    /**
     * 登录
     *
     * @param username 用户名
     * @param password 密码
     * @return {@link UserDTO} 通用的用户传输对象
     */
    UserDTO login(String username, String password);
}

【后台管理】工程

  • 新建: module-manager 模块
  • 添加: pom.xml
  • 结构说明: 主要包含 系统功能-模块登录功能-模块等业务,通过 maven 依赖传递机制(聚合原则) ,最终产生一个 启动器-模块
xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.calvin</groupId>
        <artifactId>spring-boot-example-06-module</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>module-manager</artifactId>
    <description>Spring Boot 模块化开发 => 【后台管理系统】模块</description>
    <packaging>pom</packaging>

    <modules>
        <module>module-manager-01-sys</module>
        <module>module-manager-02-login</module>
        <module>module-manager-03-starter</module>
    </modules>

    <dependencies>

        <!-- START: API模块 -->
        <dependency>
            <groupId>com.calvin</groupId>
            <artifactId>module-api</artifactId>
            <!-- 保证所有版本同步,所以使用 ${module.version} -->
            <version>${module.version}</version>
        </dependency>
        <!-- END: API模块 -->

    </dependencies>

</project>

系统功能-模块

  • 新建: module-manager-01-sys 模块
  • 添加: pom.xml
  • 结构说明: 主要使用 MVC模型概念,进行结构化分包。
    • domain包: M 模型层(领域驱动模型)
    • mapper包: P 数据访问层
    • controller包: C 控制层
    • service包: S 接口实现层
java
package com.calvin.module.manager.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.calvin.module.api.SysUserApi;
import com.calvin.module.manager.sys.domain.entity.SysUser;

import java.util.List;


/**
 * 系统用户服务
 *
 * @author calvin
 * @date 2024/01/31
 */
public interface SysUserService extends IService<SysUser>, SysUserApi { 

  /**
   * 按名称搜索
   *
   * @param name 名字
   * @return {@link List}<{@link SysUser}>
   */
  List<SysUser> searchByName(String name);
}
  • SysUserServiceImp 实现类
java
package com.calvin.module.manager.sys.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.calvin.module.api.pojo.SysUserRequest;
import com.calvin.module.api.pojo.dto.UserDTO;
import com.calvin.module.manager.sys.domain.entity.SysUser;
import com.calvin.module.manager.sys.mapper.SysUserMapper;
import com.calvin.module.manager.sys.service.SysUserService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 系统用户服务-实现类
 *
 * @author calvin
 * @date 2024/01/31
 */
@Service
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {

    @Override
    public List<SysUser> searchByName(String name) {
        return this.baseMapper.listByLikeName(name);
    }


    // -------------------- 公共业务 --------------------

    @Override
    public UserDTO findOne(SysUserRequest request) {
        SysUser sysUser = getById(request.getUserId());
        if (sysUser == null) {
            return null;
        }
        UserDTO dto = new UserDTO();
        BeanUtils.copyProperties(sysUser, dto);
        return dto;
    }
}

登录功能-模块

  • 新建: module-manager-02-login 模块
  • 添加: pom.xml
  • 结构说明: 主要使用 MVC模型概念,进行结构化分包。由于没有具体的业务实体,领域相对广泛,所依赖业务较为广泛,耦合度相对较高。
    • controller包: C 控制层
    • service包: S 接口实现层

所以,需要 注入/调用通用API模块-系统用户API, 来实现登录功能。

  • 登录功能
    • 耦合: 注入/调用 系统用户API
java
package com.calvin.module.manager.login.service.impl;

import com.calvin.module.api.SysUserApi;
import com.calvin.module.api.pojo.SysUserRequest;
import com.calvin.module.api.pojo.dto.UserDTO;
import com.calvin.module.manager.login.service.LoginService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * 登录业务-实现类
 *
 * @author Calvin
 * @date 2024/1/31
 * @since v1.0.0
 */
@Service
public class LoginServiceImpl implements LoginService {

    @Resource
    SysUserApi sysUserApi; 

    @Override
    public UserDTO login(String username, String password) {
        SysUserRequest request = new SysUserRequest();
        request.setAccount(username);
        UserDTO userDTO = sysUserApi.findOne(request); 
        if (userDTO == null) {
            return  null;
        }
        return userDTO;
    }
}

启动器-模块

  • 新建: module-manager-03-starter 模块
  • 添加: pom.xml
  • 结构说明: 主要使用 MVC模型概念,进行结构化分包, 该模块通过聚合原则,整合了上述 2 个模块功能。
    • controller: C 控制层, 用于首页入口
    • ManagerApplication类: 服务的启动器
    • resources: 服务相关的资源文件配置文件
xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.calvin</groupId>
        <artifactId>module-manager</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>module-manager-03-starter</artifactId>
    <description>后台管理模块 => 【应用启动器】模块</description>
    <packaging>jar</packaging>

    <dependencies>

        <dependency>
            <groupId>com.calvin</groupId>
            <artifactId>module-manager-01-sys</artifactId>
            <version>${module.version}</version>
        </dependency>

        <dependency>
            <groupId>com.calvin</groupId>
            <artifactId>module-manager-02-login</artifactId>
            <version>${module.version}</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.calvin.module.manger.starter.ManagerApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

</project>
  • ManagerApplication类启动器
java
package com.calvin.module.manger.starter;

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

/**
 * 后台管理-应用启动类
 *
 * @author Calvin
 * @date 2024/1/31
 * @since v1.0.0
 */
@SpringBootApplication(scanBasePackages = "com.calvin.module")
@MapperScan(value = "com.calvin.module.manager.**.mapper")
public class ManagerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ManagerApplication.class,args);
    }
}
  • application.yaml启动器-配置文件
yaml
server:
  port: 8081
  error:
    path: /error
# 数据源配置
spring:
  # 配置 MYSQL 连接
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/spring-boot-mybatis-plus?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: cw123789L
    # 数据源连接池类型为: hikari
    type: com.zaxxer.hikari.HikariDataSource
    # hikari 连接池配置
    hikari:
      # 最大线程池数: 20 个
      maximum-pool-size: 20
      # 连接超时: 30秒
      connection-timeout: 30000

# MyBatis Plus 配置
mybatis-plus:
  # 全局配置
  global-config:
    # db 配置
    db-config:
      # 逻辑删除字段 (全局配置删除字段名称,不需要使用 @TableLogic)
      logic-delete-field: del_flag
      # 逻辑删除字段值(默认值为1)
      logic-delete-value: Y
      # 逻辑未删除字段值(默认值为0)
      logic-not-delete-value: N
  configuration:
    # 控制台日志输出
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  # 映射的Mapper.xml 文件
  mapper-locations: classpath*:/mapper/**/*.xml

# 日志配置
logging:
  level:
    # mybatis 日志级别为 INFO
    mybatis: INFO

【前台系统】工程

  • 新建: module-website 模块
  • 添加: pom.xml
  • 结构说明: 主要包含 内容功能-模块会员功能-模块登录功能-模块等业务,通过 maven 依赖传递机制(聚合原则) ,最终产生一个 启动器-模块
xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.calvin</groupId>
        <artifactId>spring-boot-example-06-module</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <artifactId>module-website</artifactId>
    <description>Spring Boot 模块化开发 =>【前台系统】模块</description>
    <packaging>pom</packaging>

    <modules>
        <module>module-website-01-cms</module>
        <module>module-website-02-member</module>
        <module>module-website-03-login</module>
        <module>module-website-04-starter</module>
    </modules>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

内容功能-模块

  • 新建: module-website-01-crm 模块
  • 添加: pom.xml
  • 结构说明: 主要使用 MVC模型概念,进行结构化分包。
    • domain包: M 模型层(领域驱动模型)
    • mapper包: P 数据访问层
    • controller包: C 控制层
    • service包: S 接口实现层
xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.calvin</groupId>
        <artifactId>module-website</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>module-website-01-cms</artifactId>
    <description>前台系统模块 => 【内容管理功能】模块</description>

</project>

会员功能-模块

  • 新建: module-website-02-member 模块
  • 添加: pom.xml
  • 结构说明: 主要使用 MVC模型概念,进行结构化分包。
    • domain包: M 模型层(领域驱动模型)
    • mapper包: P 数据访问层
    • controller包: C 控制层
    • service包: S 接口实现层
xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.calvin</groupId>
        <artifactId>module-website</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>module-website-02-member</artifactId>
    <description>前台系统模块 => 【会员功能】模块</description>

</project>

登录功能-模块

  • 新建: module-website-03-login 模块
  • 添加: pom.xml
  • 结构说明: 主要使用 MVC模型概念,进行结构化分包。由于没有具体的业务实体,领域相对广泛,所依赖业务较为广泛,耦合度相对较高。
    • controller包: C 控制层
    • service包: S 接口实现层
xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.calvin</groupId>
        <artifactId>module-website</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>module-website-03-login</artifactId>
    <description>前台系统模块 => 【登录功能】模块</description>

</project>

启动器-模块

  • 新建: module-website-04-starter 模块
  • 添加: pom.xml
  • 结构说明: 主要使用 MVC模型概念,进行结构化分包, 该模块通过聚合原则,整合了上述 2 个模块功能。
    • controller: C 控制层, 用于首页入口
    • WebSiteApplication类: 服务的启动器
    • resources: 服务相关的资源文件配置文件
xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.calvin</groupId>
    <artifactId>module-website</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
  </parent>

  <artifactId>module-website-04-starter</artifactId>
  <description>前台系统模块 => 【应用启动器】模块</description>


  <build>
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>${spring-boot.version}</version>
        <configuration>
          <mainClass>com.calvin.module.website.starter.WebsiteApplication</mainClass>
          <skip>true</skip>
        </configuration>
        <executions>
          <execution>
            <id>repackage</id>
            <goals>
              <goal>repackage</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

</project>
  • WebsiteApplication类启动器
java
package com.calvin.module.website.starter;

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

/**
 * 前台-应用启动类
 *
 * @author Calvin
 * @date 2024/1/31
 * @since v1.0.0
 */
@SpringBootApplication(scanBasePackages = "com.calvin.module")
@MapperScan(value = "com.calvin.module.website.**.mapper")
public class WebsiteApplication {

  public static void main(String[] args) {
    SpringApplication.run(WebsiteApplication.class,args);
  }
}
  • application.yaml启动器-配置文件
yaml
server:
  port: 8080
  error:
    path: /error
# 数据源配置
spring:
  # 配置 MYSQL 连接
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/spring-boot-mybatis-plus?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: cw123789L
    # 数据源连接池类型为: hikari
    type: com.zaxxer.hikari.HikariDataSource
    # hikari 连接池配置
    hikari:
      # 最大线程池数: 20 个
      maximum-pool-size: 20
      # 连接超时: 30秒
      connection-timeout: 30000

# MyBatis Plus 配置
mybatis-plus:
  # 全局配置
  global-config:
    # db 配置
    db-config:
      # 逻辑删除字段 (全局配置删除字段名称,不需要使用 @TableLogic)
      logic-delete-field: del_flag
      # 逻辑删除字段值(默认值为1)
      logic-delete-value: Y
      # 逻辑未删除字段值(默认值为0)
      logic-not-delete-value: N
  configuration:
    # 控制台日志输出
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  # 映射的Mapper.xml 文件
  mapper-locations: classpath*:/mapper/**/*.xml

# 日志配置
logging:
  level:
    # mybatis 日志级别为 INFO
    mybatis: INFO

3. 视频演示