Spring Boot 2.7.18(最终 2.x 系列版本)2 - 框架搭建:pom配置;多环境配置文件配置
Spring Boot 2.7.18(最终 2.x 系列版本)2 - 框架搭建:pom配置;多环境配置文件配置;多环境数据源配置
- Spring Boot 2.7.18(最终 2.x 系列版本)2 - 框架搭建
- 技术选型
- pom 配置
- 多环境配置文件配置
- 通用配置 application.yml
- 开发环境:application-dev.yml
- 测试环境:application-test.yml
- 生产环境:application-prod.yml
- 多环境数据源配置
- 开发 / 测试数据源:datasource-dev.yml / datasource-test.yml
- 生产数据源:datasource-prod.yml
Spring Boot 2.7.18(最终 2.x 系列版本)2 - 框架搭建
技术选型
- 数据连接池双配置策略:
- 开发 / 测试环境:使用 Druid,方便看 SQL、监控
- 生产环境:使用 HikariCP,追求性能
- 接口文档:Knife4j,前端需要直接看文档且希望导出 Word/PDF
pom 配置
<?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.0https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- ========================================================= --><!-- 🔹 项目信息 --><!-- ========================================================= --><groupId>cn.hao.kai</groupId><artifactId>spring-boot-demo</artifactId><version>0.0.1</version><name>spring-boot-demo</name><description>Spring Boot 2.7.18 多环境 Demo 工程</description><!-- ========================================================= --><!-- 🔹 父工程(Spring Boot 官方) --><!-- ========================================================= --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version><relativePath/></parent><!-- ========================================================= --><!-- 🔹 属性配置 --><!-- ========================================================= --><properties><!-- JDK 版本 --><java.version>1.8</java.version><!-- ===== 核心依赖版本 ===== --><spring-boot.version>2.7.18</spring-boot.version><mybatis-plus.version>3.5.14</mybatis-plus.version><freemarker.version>2.3.34</freemarker.version><druid.version>1.2.27</druid.version><hikari.version>5.1.0</hikari.version><jasypt.version>3.0.5</jasypt.version><lombok.version>1.18.42</lombok.version><knife4j.version>4.5.0</knife4j.version><!-- ===== 插件版本 ===== --><maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version><maven-surefire-plugin.version>3.5.4</maven-surefire-plugin.version><!-- ===== 编码与测试控制 ===== --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><skipTests>true</skipTests></properties><!-- ========================================================= --><!-- 🔹 依赖管理 --><!-- ========================================================= --><dependencies><!-- 基础依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!-- Web 模块 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Log4j2 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency><!-- 数据库层 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><!-- Druid(开发/测试环境使用) --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!-- HikariCP(生产环境使用) --><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>${hikari.version}</version></dependency><!-- MyBatis Plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!-- 于 v3.5.9 起,PaginationInnerInterceptor 已分离出来。如需使用,则需单独引入 mybatis-plus-jsqlparser 依赖 --><!-- https://baomidou.com/plugins/pagination/ --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-jsqlparser</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>${mybatis-plus.version}</version></dependency><!-- Jasypt 加密工具 --><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>${jasypt.version}</version></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><scope>provided</scope></dependency><!-- Knife4j OpenAPI 文档 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>${knife4j.version}</version></dependency><!-- 测试模块 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><!-- ========================================================= --><!-- 🔹 插件配置 --><!-- ========================================================= --><build><plugins><!-- Spring Boot 打包插件 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- 编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin><!-- 测试插件(跳过测试) --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${maven-surefire-plugin.version}</version><configuration><skipTests>${skipTests}</skipTests></configuration></plugin></plugins></build><!-- ========================================================= --><!-- 🔹 多环境配置 --><!-- ========================================================= --><profiles><!-- 🧪 开发环境 --><!-- 使用 Druid 数据源,打印 SQL,便于调试 --><!-- 打包命令:mvn clean package -Pdev --><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><spring.profiles.active>dev</spring.profiles.active></properties></profile><!-- 🧩 测试环境 --><!-- 使用 Druid 数据源,可启用 SQL 监控,但关闭控制台调试 --><!-- 打包命令:mvn clean package -Ptest --><profile><id>test</id><properties><spring.profiles.active>test</spring.profiles.active></properties></profile><!-- 🚀 生产环境 --><!-- 使用 HikariCP 数据源,追求性能与稳定 --><!-- 打包命令:mvn clean package -Pprod --><profile><id>prod</id><properties><spring.profiles.active>prod</spring.profiles.active></properties></profile></profiles></project>
多环境配置文件配置
目录结构如下

通用配置 application.yml
spring:application:name: spring-boot-demo-2.7.18profiles:active: dev# Mybatis-Plus配置
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpldefault-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandlerglobal-config:db-config:logic-delete-field: deleted # 全局逻辑删除的实体字段名,默认值为deletedlogic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
开发环境:application-dev.yml
spring:config:# 导入开发环境模块化连接池配置import: "classpath:datasource/datasource-dev.yml"# 日志级别
logging:level:root: INFOcn.hao.kai: DEBUG
测试环境:application-test.yml
spring:config:# 导入测试环境模块化连接池配置import: "classpath:datasource/datasource-test.yml"# 日志级别
logging:level:root: INFOcn.hao.kai: DEBUG
生产环境:application-prod.yml
spring:config:# 导入生产环境模块化连接池配置import: "classpath:datasource/datasource-prod.yml"# 日志级别
logging:level:root: WARNcn.hao.kai: INFO
多环境数据源配置
由于数据库连接池的参数较多,因此将数据源的配置单独拆出来,放置在独立的配置文件中进行引入的方式。
开发 / 测试数据源:datasource-dev.yml / datasource-test.yml
spring:datasource:# ========================= 开发环境 Druid 数据源 =========================type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=true&rewriteBatchedStatements=true&allowMultiQueries=trueusername: rootpassword: rootdruid:# ---------- 连接池基础配置 ----------initial-size: 10 # 初始连接数min-idle: 10 # 最小空闲连接数max-active: 150 # 最大连接数max-wait: 60000 # 最大等待时间(ms)min-evictable-idle-time-millis: 1800000max-evictable-idle-time-millis: 25200000time-between-eviction-runs-millis: 60000test-on-borrow: falsetest-on-return: falsetest-while-idle: truevalidation-query: SELECT 1# ---------- 监控配置 ----------stat-view-servlet:enabled: trueurl-pattern: /druid/* # Druid 控制台访问路径login-username: druidlogin-password: druidreset-enable: trueallow: "" # 允许所有deny: "" # 拒绝为空# ---------- SQL / 日志监控 ----------filter:stat:enabled: truemerge-sql: trueslow-sql-millis: 3000wall:enabled: falsedb-type: mysqlslf4j:enabled: true# ---------- Web 监控过滤器 ----------web-stat-filter:enabled: truesession-stat-enable: falseexclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"url-pattern: /*
生产数据源:datasource-prod.yml
spring:datasource:# ========================= 生产环境 HikariCP 数据源 =========================type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://prod-db:3306/demo?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=true&rewriteBatchedStatements=true&allowMultiQueries=trueusername: prod_userpassword: prod_passwordhikari:pool-name: HikariPoolmaximum-pool-size: 30minimum-idle: 10idle-timeout: 30000connection-timeout: 10000max-lifetime: 1800000auto-commit: true