Ruoyi Springboot3版本改造

项目初始化

1.项目地址

https://gitee.com/y_project/RuoYi-Vue/tree/springboot3/

2.拉取代码到本地

1
git clone -b springboot3 https://gitee.com/y_project/RuoYi-Vue.git 

3.idea 打开项目

  • project structre -> project settings -> project -> SDK | language level 配置17
  • project structre -> platform settings -> SDKs -> 17
  • Settings -> Build Tools -> Maven 配置本地

4.数据库初始化

  • mysql 新建 数据库

  • 项目路径/sql/等下数据库文件 导入数据库

  • 修改数据库配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    spring:
    datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    druid:
    # 主库数据源
    master:
    url: jdbc:mysql://1.XX.X.XX:3306/compliance_ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
    username: root
    password: 'XX'
    # 注意
    # useSSL=false:禁用 SSL 加密连接,开发环境或内网安全环境中可以禁用以提高性能
    # rewriteBatchedStatements=true ,用于优化批量操作(Batch Operations)的性能

5.后端启动

  • Maven 下载依赖
  • RuoYiApplication 运行启动

6.前端启动

  • ruoyi-ui 目录下,执行 npm install ,下载依赖
  • 执行 npm run dev 启动前端

架构改造

模块修改

  • ruoyi -> single

  • pom 修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <groupId>cn.zzsn</groupId>
    <artifactId>single</artifactId>
    <version>1.0.0</version>

    <name>single</name>
    <description>基于springboot3 单一架构 </description>

    <properties>
    <single.version>1.0.0</single.version>
    </properties>

    <dependencyManagement>
    <dependencies>
    <!-- 定时任务-->
    <dependency>
    <groupId>cn.zzsn</groupId>
    <artifactId>quartz</artifactId>
    <version>${single.version}</version>
    </dependency>

    <!-- 代码生成-->
    <dependency>
    <groupId>cn.zzsn</groupId>
    <artifactId>generator</artifactId>
    <version>${single.version}</version>
    </dependency>

    <!-- 核心模块-->
    <dependency>
    <groupId>cn.zzsn</groupId>
    <artifactId>framework</artifactId>
    <version>${single.version}</version>
    </dependency>

    <!-- 系统模块-->
    <dependency>
    <groupId>cn.zzsn</groupId>
    <artifactId>system</artifactId>
    <version>${single.version}</version>
    </dependency>

    <!-- 通用工具-->
    <dependency>
    <groupId>cn.zzsn</groupId>
    <artifactId>common</artifactId>
    <version>${single.version}</version>
    </dependency>
    </dependencies>
    </dependencyManagement>

    <modules>
    <module>admin</module>
    <module>framework</module>
    <module>system</module>
    <module>quartz</module>
    <module>generator</module>
    <module>common</module>
    </modules>
  • ruoyi-common -> common

    • 包名修改为:cn.zzsn.common

    • pom修改

      1
      2
      3
      4
      5
      6
      7
      <parent>
      <groupId>cn.zzsn</groupId>
      <artifactId>single</artifactId>
      <version>1.0.0</version>
      </parent>

      <artifactId>common</artifactId>
  • ruoyi-framework -> framework

    • 包名修改为:cn.zzsn.framework

    • pom修改

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
       <parent>
      <groupId>cn.zzsn</groupId>
      <artifactId>single</artifactId>
      <version>1.0.0</version>
      </parent>

      <dependencies>
      <!-- 系统模块-->
      <dependency>
      <groupId>cn.zzsn</groupId>
      <artifactId>system</artifactId>
      </dependency>
      </dependencies>
  • ruoyi-system -> system

    • 包名修改为:cn.zzsn.system

    • pom修改

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      <parent>
      <groupId>cn.zzsn</groupId>
      <artifactId>single</artifactId>
      <version>1.0.0</version>
      </parent>

      <dependencies>
      <!-- 通用工具-->
      <dependency>
      <groupId>cn.zzsn</groupId>
      <artifactId>common</artifactId>
      </dependency>
      </dependencies>
  • ruoyi-quartz ->quartz

    • 包名修改为:cn.zzsn.quartz

    • pom修改

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      <parent>
      <groupId>cn.zzsn</groupId>
      <artifactId>single</artifactId>
      <version>1.0.0</version>
      </parent>

      <dependencies>
      <!-- 通用工具-->
      <dependency>
      <groupId>cn.zzsn</groupId>
      <artifactId>common</artifactId>
      </dependency>
      </dependencies>
  • ruoyi-generator -> generator

    • 包名修改为:cn.zzsn.generator

    • pom修改

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      <parent>
      <groupId>cn.zzsn</groupId>
      <artifactId>single</artifactId>
      <version>1.0.0</version>
      </parent>

      <dependencies>
      <!-- 通用工具-->
      <dependency>
      <groupId>cn.zzsn</groupId>
      <artifactId>common</artifactId>
      </dependency>
      </dependencies>
  • ruoyi-adim -> admin

    • 包名修改为:cn.zzsn.admin

    • pom修改

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      <parent>
      <groupId>cn.zzsn</groupId>
      <artifactId>single</artifactId>
      <version>1.0.0</version>
      </parent>

      <dependencies>
      <!-- 核心模块-->
      <dependency>
      <groupId>cn.zzsn</groupId>
      <artifactId>framework</artifactId>
      </dependency>

      <!-- 定时任务-->
      <dependency>
      <groupId>cn.zzsn</groupId>
      <artifactId>quartz</artifactId>
      </dependency>

      <!-- 代码生成-->
      <dependency>
      <groupId>cn.zzsn</groupId>
      <artifactId>generator</artifactId>
      </dependency>
      </dependencies>
  • application.yml 修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # MyBatis配置
    mybatis:
    # 搜索指定包别名
    typeAliasesPackage: cn.zzsn.**.domain

    # 日志配置
    logging:
    level:
    cn.zzsn: debug

    # Springdoc配置
    springdoc:
    group-configs:
    - group: 'default'
    display-name: '测试模块'
    paths-to-match: '/**'
    packages-to-scan: com.zzsn.web.controller.tool
  • generator.yml

    1
    2
    3
    4
    5
    gen:
    # 作者
    author: kongliufeng
    # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
    packageName: com.zzsn.system
  • logback.xml

    1
    2
    <!-- 系统模块日志级别控制  -->
    <logger name="cn.zzsn" level="info" />
  • ApplicationConfig 修改

    1
    @MapperScan("cn.zzsn.**.mapper")
  • CaptchaConfig 修改

    1
    2
    // 验证码文本生成器
    properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "cn.zzsn.framework.config.KaptchaTextCreator");
  • Constants修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /**
    * 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全)
    */
    public static final String[] JSON_WHITELIST_STR = { "org.springframework", "cn.zzsn" };

    /**
    * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
    */
    public static final String[] JOB_WHITELIST_STR = { "cn.zzsn.quartz.task" };

    /**
    * 定时任务违规的字符
    */
    public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
    "org.springframework", "org.apache", "cn.zzsn.common.utils.file", "cn.zzsn.common.config", "cn.zzsn.generator" };

mybatis-plus 适配

参考:https://github.com/baomidou/mybatis-plus 开源地址

  • pom 文件修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <properties>
    <mybatis-plus.version>3.5.12</mybatis-plus.version>
    <mybatis.version>3.5.19</mybatis.version>
    </properties>

    <!-- 依赖声明 -->
    <dependencyManagement>
    <dependencies>
    <!-- mybatis-plus-spring-boot3 -->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>${mybatis-plus.version}</version>
    </dependency>

    <!-- mybatis-plus jsqlparser -->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-jsqlparser</artifactId>
    <version>${mybatis-plus.version}</version>
    </dependency>

    <!-- mybatis :注意mybatis-plus-spring-boot3-V3.5.12 版本依赖为mybatis-V3.5.19,架构引用的pagehelper-spring-boot-starter-V2.1.0 依赖低版本 V3.5.14,故这里统一管理高版本-->
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>${mybatis.version}</version>
    </dependency>
    </dependencies>
    </dependencyManagement>
  • common 模块 pom 修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <dependencies>
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    </dependency>

    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-jsqlparser</artifactId>
    </dependency>
    </dependencies>
  • application.yml 文件修改

    1
    2
    3
    4
    5
    # mybatis 改成 mybatis-plus 
    mybatis-plus:
    typeAliasesPackage: cn.zzsn.**.domain
    mapperLocations: classpath*:mapper/**/*Mapper.xml
    configLocation: classpath:mybatis/mybatis-config.xml