SpringBoot系列---【yml配置文件中的值如何注入到java配置类中?】

1.第一种属性注入方式:@Value,注意这里的前提是,属性值写在application.yml中

@Component //注册bean
public class Dog {
    @Value("${name}") //配置文件中配置name=张三
  private String name;
  @Value(
"3")
  private Integer age;
//省略get,set
}

2.准备工作一个application.yml文件

person:
  name: zhangsan
  age: 18
  happy: false
  birth: 2021/01/28
  maps: {k1: v1,k2: v2}
  lists:
   - code
   - girl
   - music
  dog:
    name: 笨笨
    age: 2

3.第二种属性注入方式:@ConfigurationProperties(prefix=" "),单独使用,不用配合@Value。

/*
@ConfigurationProperties作用:
将配置文件中配置的每一个属性的值,映射到这个组件中;
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应
*/
@Component //注册bean
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}

4.第三种属性注入方式:@PropertySource :加载指定的配置文件,通常配合@Value注解使用。

@ConfigurationProperties:默认从全局配置文件中获取值;

这里自己写一个person.yml,我这里省略了。

示例1:

@PropertySource(value = "classpath:person.yml")
@Component //注册bean
public class Person {

    @Value("${name}")
    private String name;

    ......  
}

示例2:

这里自己写一个user.yml,我这里省略了。

@Component //注册bean
@PropertySource(value = "classpath:user.yml")
public class User {
    //直接使用@value
    @Value("${user.name}") //从配置文件中取值
    private String name;
    @Value("#{9*2}")  // #{SPEL} Spring表达式
    private int age;
    @Value("男")  // 字面量
    private String sex;
}
愿你走出半生,归来仍是少年!
原文地址:https://www.cnblogs.com/hujunwei/p/14342515.html