Java如何使用ConfigurationProperties获取yml中的配置

我来给你讲解一下Java如何使用@ConfigurationProperties获取yml中的配置。

什么是@ConfigurationProperties?

@ConfigurationProperties是Spring Boot框架中的一个注解,它可以将配置文件中的属性与一个JavaBean绑定在一起,使得我们可以通过JavaBean的属性名来获取配置文件中的属性值。

如何使用@ConfigurationProperties获取yml中的配置?

在使用@ConfigurationProperties之前,我们需要做一些准备工作。

  1. 首先在pom.xml中引入以下依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
  1. 然后在yml配置文件中定义属性值,例如:
my:
  name: Alice
  age: 20
  1. 接着在JavaBean中通过@ConfigurationProperties注解将配置文件中的属性与JavaBean的属性绑定起来,例如:
@Component
@ConfigurationProperties(prefix = "my")
public class MyConfig {

    private String name;
    private int age;

    // 省略setter和getter方法

}
  1. 最后在需要使用这些属性的地方注入MyConfig即可获取配置文件中的属性值,例如:
@RestController
public class MyController {

    @Autowired
    private MyConfig myConfig;

    @GetMapping("/my")
    public String my() {
        return "name: " + myConfig.getName() + ", age: " + myConfig.getAge();
    }

}

这样就可以通过@ConfigurationProperties获取yml中的配置了。

示例说明

下面给出两个示例来说明@ConfigurationProperties的具体使用过程:

示例1

在yml配置文件中定义一个属性值:

redis:
  host: localhost

在JavaBean中将配置文件中的属性值与JavaBean的属性绑定起来:

@Component
@ConfigurationProperties(prefix = "redis")
public class RedisConfig {

    private String host;

    // 省略setter和getter方法

}

在需要使用这些属性的地方注入RedisConfig即可获取配置文件中的属性值:

@RestController
public class RedisController {

    @Autowired
    private RedisConfig redisConfig;

    @GetMapping("/redis")
    public String redis() {
        return "host: " + redisConfig.getHost();
    }

}

示例2

在yml配置文件中定义多个属性值:

my:
  name: Alice
  age: 20
  address:
    province: Beijing
    city: Haidian
    street: Zhongguancun

在JavaBean中将配置文件中的属性值与JavaBean的属性绑定起来:

@Component
@ConfigurationProperties(prefix = "my")
public class MyConfig {

    private String name;
    private int age;
    private Address address;

    // 省略setter和getter方法

    public static class Address {
        private String province;
        private String city;
        private String street;

        // 省略setter和getter方法
    }

}

在需要使用这些属性的地方注入MyConfig即可获取配置文件中的属性值:

@RestController
public class MyController {

    @Autowired
    private MyConfig myConfig;

    @GetMapping("/my")
    public String my() {
        return "name: " + myConfig.getName() + ", age: " + myConfig.getAge() +
                ", province: " + myConfig.getAddress().getProvince() +
                ", city: " + myConfig.getAddress().getCity() +
                ", street: " + myConfig.getAddress().getStreet();
    }

}

这样就可以通过@ConfigurationProperties获取yml中的配置了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java如何使用ConfigurationProperties获取yml中的配置 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章