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;
}