Spring Boot之配置文件值注入(@ConfigurationProperties)

时间:2023-03-09 06:30:25
Spring Boot之配置文件值注入(@ConfigurationProperties)

前言:Spring Boot配置文件值的注入有两种方式,分别是

  1. @ConfigurationProperties
  2. @Value

这里我们使用第一种

首先我们创建一个application.yml文件,里面写入这样一组数据

person:
    lastName: hello
    age: 18
    boss: false
    birth: 2017/12/12
    maps: {k1: v1,k2: 12}
    lists:
      - lisi
      - zhaoliu
    dog:
      name: 小狗
      age: 12

之后我们创建一个JavaBean

/**
 * 将配置文件中配置的每一个属性的值,映射到这个组件中
 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
 *      prefix = "person":配置文件中哪个下面的所有属性进行一一映射
 *
 * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
 *
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String, Object> maps;
    private List<Object> lists;
    private Dog dog;

}

我们需要在pom文件中导入这段代码,这样当我们写配置文件的时候会根据JavaBean来提示

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

在application入口测试类中进行测试,看能不能将配置文件的值注入到JavaBean中

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot01ConfigApplicationTests {

    @Autowired
    Person person;
    @Test
    public void contextLoads() {
        System.out.println(person);
    }

}

Person{lastName='zhangsan', age=18, boss=false, birth=Tue Dec 12 00:00:00 CST 2017, maps={k1=v1, k2=12}, lists=[lisi, zhaoliu], dog=Dog{name='小狗', age=12}}

成功将数据注入进去,以上就是Spring Boot的配置文件值注入的全部内容

提示:将配置文件值注入到JavaBean中一定要加@Component注解