Skip to content

配置读取类(读取 yml/properties)

读取项目配置文件(application.ymlapplication.properties)中的参数,避免硬编码,提高配置灵活性。

注解 作用说明
@Value 读取单个配置项,语法 ${配置项key},适合读取简单配置(如端口、密码)
@ConfigurationProperties 批量读取配置项,通过 prefix 指定配置前缀,自动绑定到实体类的属性上,适合读取复杂配置(如数据源、Redis)
  1. 编写配置文件(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. 读取配置(两种方式)
// 方式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 "配置读取测试完成";
    }
}