43-springboot-yaml读取数据

文章介绍了在SpringBoot应用中读取YAML配置文件的三种方法:1)使用@Value注解直接注入配置值;2)创建YAMLConfigReader工具类,通过Environment获取配置;3)创建实体类封装配置属性,并使用@ConfigurationProperties注解。
摘要由CSDN通过智能技术生成

1.使用value直接读取

在需要读取配置数据的类中,使用@Value注解直接注入配置值。例如:

@Component
public class MyComponent {
    @Value("${myapp.name}")
    private String name;
    
    @Value("${myapp.age}")
    private int age;
    
    // ...
}

在上面的示例中,通过${...}语法,可以读取YAML配置文件中myapp.name和myapp.age的值,并将它们注入到name和age变量中。

然后,你就可以在MyComponent或其他类中使用这些注入的值进行业务逻辑处理。
需要注意的是,使用@Value注解读取YAML数据时,你需要确保配置文件中存在相应的键(例如myapp.name和myapp.age)以及对应的值。

2.使用environment封装后读取数据

创建一个封装环境变量读取的工具类,例如 YAMLConfigReader:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
@PropertySource("classpath:application.yml")
public class YAMLConfigReader {

    @Autowired
    private Environment environment;

    public String getValue(String key) {
        return environment.getProperty(key);
    }
}

在上面的示例中,我们使用 Environment 对象通过 getProperty 方法来获取指定键对应的值。在需要读取配置数据的类中注入 YAMLConfigReader 对象,并调用其 getValue 方法进行配置值的读取。例如:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {

    private final YAMLConfigReader yamlConfigReader;

    @Autowired
    public MyComponent(YAMLConfigReader yamlConfigReader) {
        this.yamlConfigReader = yamlConfigReader;
    }

    public void doSomething() {
        String name = yamlConfigReader.getValue("myapp.name");
        int age = Integer.parseInt(yamlConfigReader.getValue("myapp.age"));

        // 使用配置数据进行业务逻辑处理
    }
}

在上面的示例中,我们通过构造函数注入了 YAMLConfigReader 对象,并在 doSomething 方法中调用了其 getValue 方法来读取配置值。注意,这里我们需要根据需要将配置值转换为相应的数据类型。

3.实体类封装属性后读取数据

创建一个用于封装配置属性的实体类,例如 MyAppConfig:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "myapp")
public class MyAppConfig {

    private String name;
    private int age;

    // 添加相应的 getter 和 setter 方法

}

在上面的示例中,我们使用注解 @ConfigurationProperties(prefix = "myapp") 来指定配置属性的前缀,即在 YAML 配置文件中与该实体类对应的配置属性的起始位置。在 Spring Boot 应用程序的配置类或启动类上,添加 @EnableConfigurationProperties 注解,并指定要扫描的实体类。例如:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@SpringBootApplication
@EnableConfigurationProperties(MyAppConfig.class)
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}

现在,你可以在需要读取配置数据的地方直接注入 MyAppConfig 对象,并使用其 getter 方法获取相应的属性值。例如:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {

    private final MyAppConfig myAppConfig;

    @Autowired
    public MyComponent(MyAppConfig myAppConfig) {
        this.myAppConfig = myAppConfig;
    }

    public void doSomething() {
        String name = myAppConfig.getName();
        int age = myAppConfig.getAge();

        // 使用配置数据进行业务逻辑处理
    }
}

在上面的示例中,我们通过构造函数注入了 MyAppConfig 对象,并在 doSomething 方法中调用了其 getter 方法来获取配置值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值