Springboot3
版本
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
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.dream</groupId>
<artifactId>app-api</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
</modules>
<!-- 版本控制 -->
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<kotlin.version>2.1.20</kotlin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<springboot.version>3.4.4</springboot.version>
<log4j2.version>2.24.2</log4j2.version>
<mysql.version>8.4.0</mysql.version>
<druid.version>1.2.23</druid.version>
<mybatis.plus.version>3.5.12</mybatis.plus.version>
<fastjson2.version>2.0.33</fastjson2.version>
<hutool.version>5.8.36</hutool.version>
<knife4j.version>4.5.0</knife4j.version>
<sa-token.version>1.41.0</sa-token.version>
<minio.version>8.5.12</minio.version>
<ip2region.version>2.7.0</ip2region.version>
<easyexcel.version>4.0.3</easyexcel.version>
<redisson.version>3.45.1</redisson.version>
<bcprov.version>1.70</bcprov.version>
<l2cache.version>2.0.0</l2cache.version>
<commons-net.version>3.11.1</commons-net.version>
<commons-text.version>1.13.0</commons-text.version>
<kaptcha.version>2.3.2</kaptcha.version>
<prometheus.version>1.14.6</prometheus.version>
<guava.version>33.4.8-jre</guava.version>
<commons-lang3.version>3.17.0</commons-lang3.version>
<dom4j.version>2.1.4</dom4j.version>
<xstream.version>1.4.21</xstream.version>
<commons-codec.version>1.18.0</commons-codec.version>
<jackson-module-kotlin.version>2.16.2</jackson-module-kotlin.version>
<actuator-admin.version>${springboot.version}</actuator-admin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
<!-- 依赖管理 -->
<dependencyManagement>
<dependencies>
<!-- bom start -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 接口文档 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-dependencies</artifactId>
<version>${knife4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 监控 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-dependencies</artifactId>
<version>${actuator-admin.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- bom end -->
<!-- slf4j-log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<!-- L2cache 多级缓存 -->
<dependency>
<groupId>io.github.ck-jesse</groupId>
<artifactId>l2cache-spring-boot-starter</artifactId>
<version>${l2cache.version}</version>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-web</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
<exclusion>
<artifactId>spring-cloud-context</artifactId>
<groupId>org.springframework.cloud</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- redisson -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>${redisson.version}</version>
</dependency>
<!-- 数据库 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- druid 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!-- mybatis-plus 分页插件 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!-- fastjson2 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>${fastjson2.version}</version>
</dependency>
<!-- sa-token -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot3-starter</artifactId>
<version>${sa-token.version}</version>
</dependency>
<!-- json序列化 sa-token -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-fastjson2</artifactId>
<version>${sa-token.version}</version>
</dependency>
<!-- 根据 ip 获取国家地理等信息 -->
<dependency>
<groupId>org.lionsoul</groupId>
<artifactId>ip2region</artifactId>
<version>${ip2region.version}</version>
</dependency>
<!-- 处理 excel 的导入导出 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
<!-- hutool 工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!-- xml处理工具 -->
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>${dom4j.version}</version>
</dependency>
<!-- 加密库 -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>${bcprov.version}</version>
</dependency>
<!-- ip地址处理工具 -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>${commons-net.version}</version>
</dependency>
<!-- 字符串处理工具 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>${commons-text.version}</version>
</dependency>
<!-- 集合等工具包 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<!-- 字符串处理等工具包 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<!-- Java 对象与 XML 相互转换 -->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>${xstream.version}</version>
</dependency>
<!-- Jackson Kotlin 模块 -->
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>${jackson-module-kotlin.version}</version>
</dependency>
<!-- 编码转换、加密等 -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
</dependency>
<!-- 验证码生成 -->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>${kaptcha.version}</version>
</dependency>
<!-- 普罗米修斯监控面板 -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>${prometheus.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!-- 构建输出的文件名 -->
<finalName>${project.name}-${profiles.active}-${project.version}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<compilerArgument>-parameters</compilerArgument>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${springboot.version}</version>
</plugin>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/main/java</sourceDir>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/test/java</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<!--预发布环境-->
<profile>
<id>pre</id>
<properties>
<profiles.active>pre</profiles.active>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>
</project>配置文件
application.yml
# 多环境
spring:
profiles:
active: @profiles.active@aplication-dev.yml
spring:
# 数据库配置
datasource:
# 数据库连接地址
url: jdbc:mysql://${mysql.server}:${mysql.port}/travel?useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai
# 数据库驱动
driver-class-name: com.mysql.cj.jdbc.Driver
# 用户名
username: ${mysql.username}
# 密码
password: ${mysql.password}
# 数据连接池
type: com.alibaba.druid.pool.DruidDataSource
# 连接池配置
druid:
# 初始化连接池时创建的连接数量
initial-size: 5
# 连接池中最小的空闲连接数量
min-idle: 5
# 连接池中最大活跃连接数量
max-active: 10
# 当连接池没有可用连接时,最大等待时间(毫秒)
max-wait: 60000
# 连接池中空闲连接的检查频率(毫秒)
time-between-eviction-runs-millis: 60000
# 连接在连接池中保持空闲的最小时间(毫秒),超过此时间的连接将被移除
min-evictable-idle-time-millis: 300000
# 验证连接有效性的SQL
validation-query: SELECT 1
# 空闲时是否检查连接有效性
test-while-idle: true
# 获取连接时是否检查连接有效性
test-on-borrow: true
# 归还连接时是否检查连接有效性
test-on-return: true
# 保持长连接
keep-alive: true
# 打开PSCache,并且指定每个连接上PSCache的大小(提升写入、查询效率)
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计
filters: stat,wall
# redis 连接池配置信息
data:
redis:
# Redis 数据库的索引
database: 2
# Redis 服务器地址
host: ${redis.server}
# 端口
port: ${redis.port}
# 密码
password: ${redis.password}
# 连接超时时间(毫秒)
timeout: 10000ms
# lettuce 连接池
lettuce:
pool:
# 连接池中最大活跃连接数量
max-active: 5
# 连接池中最小的空闲连接数量
min-idle: 1
# 连接池中最大的空闲连接数量
max-idle: 3
# 当连接池没有可用的连接时,最大等待时间,单位为毫秒
max-wait: 30000ms
# 序列化配置
jackson:
serialization:
# 枚举类型在序列化时将使用 toString() 方法的返回值
write-enums-using-to-string: true
# 日期类型在序列化时将以字符串格式输出,而不是时间戳
write-dates-as-timestamps: false
deserialization:
# 反序列化时将使用枚举的 toString() 方法匹配字符串值
read-enums-using-to-string: true
# 反序列化时如果遇到未知属性将不会抛出异常
fail-on-unknown-properties: false
# 在序列化时始终包含所有属性
default-property-inclusion: always
# 序列化和反序列化日期格式
date-format: yyyy-MM-dd HH:mm:ss
# 设置时区为 GMT+8,用于处理日期和时间的时区问题
time-zone: GMT+8
# 文件上传配置
servlet:
multipart:
max-file-size: 50MB
max-request-size: 50MB
# MyBatis-Plus 配置
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# open api配置
springdoc:
# Swagger UI
swagger-ui:
enabled: true
# 关闭文档展开功能
doc-expansion: none
# 表示按字母顺序对标签进行排序
tags-sorter: alpha
# api 文档
api-docs:
# 开关
enabled: true
# 访问路径
path: /v3/api-docs