一、SpringBoot 配置文件格式
SpringBoot 支持两种主流配置文件格式,核心功能一致,仅语法不同:
1. application.properties(键值对格式)
- 语法:
key=value,层级通过.分隔
properties
server.port=9090
server.servlet.context-path=/start
2. application.yml/application.yaml(YAML 格式)
- 语法:层级缩进(2 个空格)+ 冒号 + 空格,结构更清晰
yaml
server:
port: 9191
servlet:
context-path: /start2
关键规则:
- YAML 中冒号后必须跟一个空格作为分隔符
- 层级关系通过空格缩进表示,相同层级左侧对齐
- 支持字符串、布尔值、数字等多种数据类型
二、YML 配置信息的书写与获取
1. 配置书写示例
示例 1:三方服务配置(阿里云 OSS)
yaml
ali-yun:
oss:
endpoint: https://oss-cn-hangzhou.aliyuncs.com
access-key-id: LTAI5tQ8e13SYZUMTjMEEQV
access-key-secret: MffMJoM24sc59SDEEJQDb0cfBVOAC9
bucket-name: gsw
示例 2:自定义配置(QQ 邮箱)
yaml
email:
user: 593140521@qq.com
code: jfejwezhcrzcbbbb
host: smtp.qq.com
auth: true
2. 配置信息的两种获取方式
方式 1:@Value 注解(单个配置项获取)
适用于少量配置项,语法:@Value("${配置键名}")
java
运行
@RestController
public class EmailController {
@Value("${email.user}")
private String emailUser;
@Value("${email.code}")
private String emailCode;
// 使用配置项
}
方式 2:@ConfigurationProperties 注解(批量绑定)
适用于一组相关配置,通过前缀批量绑定到实体类
java
运行
@Component
@ConfigurationProperties(prefix = "email")
public class EmailProperties {
// 成员变量名必须与配置文件中的键名一致
private String user;
private String code;
private String host;
private boolean auth;
// getter/setter 方法(必须)
public String getUser() { return user; }
public void setUser(String user) { this.user = user; }
// 其他getter/setter省略
}
优势:批量绑定更简洁,支持配置校验、IDE 提示,适合复杂配置场景。
三、SpringBoot 整合 MyBatis
1. 核心依赖引入
在 pom.xml 中引入 MyBatis 官方提供的 SpringBoot 起步依赖:
xml
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
2. 自动配置原理
引入依赖后,SpringBoot 会自动配置以下核心组件,无需手动编写 XML:
SqlSessionFactoryBean:MyBatis 核心工厂类MapperScannerConfigurer:Mapper 接口扫描器,自动注册 MapperDataSource:数据源配置,可通过application.yml配置数据库连接
3. 数据库配置示例(application.yml)
yaml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
username: root
password: 123456
# MyBatis配置
mybatis:
mapper-locations: classpath:mapper/*.xml # Mapper XML文件路径
type-aliases-package: com.example.entity # 实体类别名包