摘要本文从一个典型的 Spring Boot 项目 application.yml 配置文件出发逐行拆解数据库连接、MyBatis 整合、日志管理等核心配置并延伸到多环境隔离、敏感信息加密、配置优先级等生产级实践。适合刚入门 Spring Boot 的开发者也适合需要系统梳理配置知识的老手回顾。一、配置文件概览Spring Boot 支持 properties 和 YAML 两种格式。YAML 凭借层级清晰、可读性强的优势已成为主流选择。下面是一个典型的 application.yml 完整配置spring: datasource: # MySQL 数据库连接地址 # 127.0.0.1:3306 表示本地 MySQL 服务 # mycnblog 为数据库名 # characterEncodingutf8 设置字符编码为 UTF-8 # useSSLfalse 禁用 SSL 连接 url: jdbc:mysql://127.0.0.1:3306/mycnblog?characterEncodingutf8useSSLfalse # 数据库用户名 username: root # 数据库密码 password: root # MySQL 驱动类名MySQL 8.x 版本使用 com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver web: resources: favicon: # 禁用 Spring Boot 默认的 favicon 图标 enabled: false # 多环境配置多平台配置 # active: dev 表示激活 dev开发环境配置 profiles: active: dev # 设置 MyBatis 的 XML 映射文件保存路径 mybatis: # ... 后面不变接下来我们分模块深入讲解。二、数据源配置DataSource2.1 基础配置项spring: datasource: url: jdbc:mysql://127.0.0.1:3306/mycnblog?characterEncodingutf8useSSLfalse username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver配置项说明urlJDBC 连接字符串包含协议、地址、端口、数据库名及连接参数username / password数据库认证凭据driver-class-nameJDBC 驱动类全限定名2.2 URL 参数详解jdbc:mysql://127.0.0.1:3306/mycnblog?characterEncodingutf8useSSLfalsecharacterEncodingutf8确保客户端与服务器之间的字符编码一致避免中文乱码。生产环境建议使用 utf8mb4以支持 emoji 等特殊字符。useSSLfalse禁用 SSL 加密连接。仅建议在开发环境使用生产环境应配置 SSL 证书并启用 useSSLtrue。其他常用参数serverTimezoneAsia/Shanghai指定时区避免时间戳转换错误MySQL 8.x 必填。allowPublicKeyRetrievaltrueMySQL 8.x 默认使用 caching_sha2_password 认证插件时需要。autoReconnecttrue连接断开后自动重连。2.3 驱动版本注意点MySQL 5.x使用 com.mysql.jdbc.Driver已废弃MySQL 8.x使用 com.mysql.cj.jdbc.Driver如果驱动类写错启动时会抛出 ClassNotFoundException 或 SQLException。2.4 生产环境进阶连接池配置Spring Boot 2.x 默认使用HikariCP性能最优的连接池。建议显式配置spring: datasource: hikari: minimum-idle: 5 # 最小空闲连接数 maximum-pool-size: 20 # 最大连接数 idle-timeout: 300000 # 空闲连接超时时间毫秒 max-lifetime: 1800000 # 连接最大生命周期毫秒 connection-timeout: 30000 # 连接超时时间毫秒 idle-timeout 仅在 minimum-idle maximum-pool-size 时生效。 如果设成一样idle-timeout 就不起作用了踩坑提醒max-file-size: 1KB 在你的配置中属于日志切割大小不是数据库配置。如果数据库连接池的 maximum-pool-size 设置过小高并发时会出现连接池耗尽异常。三、Spring MVC 配置spring: web: resources: favicon: enabled: falseSpring Boot 默认会在根路径 /favicon.ico 提供一个绿色的叶子图标。通过spring.web.resources.favicon.enabled: false可以禁用它避免与自定义网站图标冲突。相关扩展自定义 favicon将 favicon.ico放在 src/main/resources/static/或 public/ 目录下即可自动生效。更精细的静态资源控制spring: mvc: static-path-pattern: /static/** # 修改静态资源访问路径 web: resources: static-locations: classpath:/static/,classpath:/public/ # 自定义静态资源目录四、多环境配置Profilesspring: profiles: active: dev这是 Spring Boot多环境隔离的核心机制。4.1 配置文件命名规则Spring Boot 会加载 application-{profile}.yml 文件环境配置文件典型场景开发环境application-dev.yml本地调试日志详细测试环境application-test.yml自动化测试使用 H2 内存数据库生产环境application-prod.yml线上部署关闭 SQL 打印启用 SSL4.2 激活 Profile 的多种方式配置文件内指定如你的配置spring.profiles.active: dev命令行参数java -jar app.jar --spring.profiles.activeprodJVM 参数-Dspring.profiles.activeprod环境变量SPRING_PROFILES_ACTIVEprod最佳实践生产环境务必通过命令行或环境变量激活不要在代码仓库中硬编码 prod 配置。4.3 配置分组Spring Boot 2.4spring: profiles: group: prod: prod-db,prod-cache,prod-mq这样激活 prod 时会同时加载 prod-db.yml、prod-cache.yml、prod-mq.yml。五、MyBatis 整合配置mybatis: # mapper XML 文件位置classpath 表示从 resources 目录下查找 # *Mapper.xml 匹配所有以 Mapper.xml 结尾的文件 mapper-locations: classpath:mapper/*Mapper.xml configuration: # 配置 MyBatis 的日志实现使用标准输出打印 SQL log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 自动将数据库下划线命名转换为 Java 驼峰命名 # 例如create_time - createTime map-underscore-to-camel-case: true5.1 mapper-locations指定 XML 映射文件的扫描路径。classpath:mapper/*Mapper.xml 表示从 resources/mapper/ 目录下查找匹配所有以 Mapper.xml 结尾的文件项目结构示例src/main/resources/ mapper/ UserMapper.xml ArticleMapper.xml5.2 map-underscore-to-camel-case: true强烈推荐开启自动将数据库的下划线命名转换为 Java 的驼峰命名数据库字段Java 属性user_nameuserNamecreate_timecreateTimeis_deleteddeleted如果不开启需要在 XML 中写大量的 resultMap 进行手动映射。5.3 日志配置 log-implorg.apache.ibatis.logging.stdout.StdOutImpl 将 SQL 输出到控制台。可选的其他实现实现类说明StdOutImpl标准输出控制台Slf4jImpl输出到 SLF4J推荐生产环境使用可统一管控Log4j2Impl输出到 Log4j2NoLoggingImpl关闭日志生产环境建议使用 Slf4jImpl配合 Logback 统一管理日志级别避免控制台输出影响性能。5.4 MyBatis 进阶类型别名与插件mybatis: type-aliases-package: com.example.demo.entity # 实体类别名包 configuration: cache-enabled: true # 开启二级缓存 lazy-loading-enabled: true # 开启延迟加载 plugins: - com.example.demo.plugin.PageInterceptor # 分页插件六、日志管理配置Logbacklogging: file: name: logs/springboot.log logback: rollingpolicy: max-file-size: 1KB file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i level: com: example: demo: debug6.1 日志级别控制Spring Boot 使用 SLF4J Logback 作为默认日志框架。级别从低到高TRACE DEBUG INFO WARN ERROR OFF你的配置中 com.example.demo: debug 表示该包下会打印 DEBUG 及以上级别的日志。6.2 日志文件切割Rolling Policy配置项说明max-file-size: 1KB单个日志文件达到 1KB 时触发切割开发环境测试用生产建议 10MB~100MBfile-name-pattern切割后的文件名格式springboot.log.2026-04-22.06.3 生产级日志配置建议logging: file: name: /var/log/myapp/application.log # 绝对路径避免相对路径漂移 logback: rollingpolicy: max-file-size: 50MB max-history: 30 # 保留 30 天的历史日志 total-size-cap: 1GB # 日志总大小上限 file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz # 压缩归档 level: root: info # 全局默认 INFO com.example.demo: warn # 业务包 WARN 级别 org.springframework.jdbc: debug # 仅调试 SQL6.4 日志格式自定义在 resources/logback-spring.xml中可以完全自定义日志格式configuration appender nameCONSOLE classch.qos.logback.core.ConsoleAppender encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern /encoder /appender /configuration七、生产环境必做敏感信息加密7.1 使用环境变量spring: datasource: password: ${MYSQL_PASSWORD:root} # 从环境变量读取默认 root7.2 使用 Jasypt 加密引入依赖dependency groupIdcom.github.ulisesbocchio/groupId artifactIdjasypt-spring-boot-starter/artifactId version4.0.4/version /dependency加密密码java -cp jasypt.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI \ inputroot password你的密钥 algorithmPBEWITHHMACSHA512ANDAES_256配置中使用密文spring: datasource: password: ENC(AbCdEfGh...) jasypt: encryptor: password: ${JASYPT_ENCRYPTOR_PASSWORD} # 加密密钥通过环境变量传入八、配置优先级重要Spring Boot 配置的加载有严格的优先级高优先级覆盖低优先级命令行参数 (--server.port8081)java:comp/env 的 JNDI 属性Java 系统属性 (System.getProperties())操作系统环境变量RandomValuePropertySource(random.*)Jar 包外的 application-{profile}.ymlJar 包外的 application.ymlJar 包内的 application-{profile}.ymlJar 包内的 application.ymlPropertySource 注解定义的属性默认属性 (SpringApplication.setDefaultProperties)实战意义你可以在 Jar 包同级目录放一份 application-prod.yml直接覆盖 Jar 内的配置无需重新打包。总结与检查清单检查项开发环境生产环境数据库密码明文⚠️ 可接受❌ 必须加密/环境变量useSSLfalse✅ 方便调试❌ 必须启用 SSLmap-underscore-to-camel-case✅ 开启✅ 开启SQL 日志打印✅ StdOutImpl❌ Slf4jImpl WARN 级别日志文件大小✅ 1KB 测试切割⚠️ 50MBProfile 激活方式✅ 配置文件✅ 命令行/环境变量连接池参数❌ 默认✅ 显式配置 HikariCP参考文档Spring Boot 官方文档 - Externalized ConfigurationMyBatis Spring Boot Starter 文档Logback 官方手册如果这篇文章对你有帮助欢迎点赞收藏有任何配置相关的问题欢迎在评论区交流讨论。