配置读取类(读取 yml/properties)
读取项目配置文件(application.yml 或 application.properties)中的参数,避免硬编码,提高配置灵活性。
| 注解 | 作用说明 |
|---|---|
@Value |
读取单个配置项,语法 ${配置项key},适合读取简单配置(如端口、密码) |
@ConfigurationProperties |
批量读取配置项,通过 prefix 指定配置前缀,自动绑定到实体类的属性上,适合读取复杂配置(如数据源、Redis) |
- 编写配置文件(application.yml)
server:
port: 8088 # 端口配置
spring:
datasource: # 数据源配置(复杂配置)
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
# 自定义配置
custom:
name: SpringBoot
version: 3.2.0
- 读取配置(两种方式)
// 方式1:@Value 读取单个配置(简单配置)
@Component
public class SimpleConfig {
// 读取 server.port
@Value("${server.port}")
private Integer serverPort;
// 读取 custom.name
@Value("${custom.name}")
private String customName;
public void printSimpleConfig() {
System.out.println("服务器端口:" + serverPort); // 输出:8088
System.out.println("自定义名称:" + customName); // 输出:SpringBoot
}
}
// 方式2:@ConfigurationProperties 批量读取(复杂配置,如数据源)
@Component
// 绑定配置前缀 spring.datasource,自动将配置项赋值给对应属性
@ConfigurationProperties(prefix = "spring.datasource")
@Data // Lombok 注解,自动生成 getter/setter
public class DataSourceConfig {
private String url;
private String username;
private String password;
private String driverClassName; // 注意:配置文件中是 driver-class-name,这里自动转驼峰
public void printDataSource() {
System.out.println("数据库URL:" + url);
System.out.println("数据库用户名:" + username);
}
}
// 测试配置读取
@RestController
@RequestMapping("/config")
public class ConfigController {
@Autowired
private SimpleConfig simpleConfig;
@Autowired
private DataSourceConfig dataSourceConfig;
@GetMapping("/test")
public String testConfig() {
simpleConfig.printSimpleConfig();
dataSourceConfig.printDataSource();
return "配置读取测试完成";
}
}