我们正常写一个对象类,会有对象的属性和方法,我们想通过注入的方式给对象的属性添加数据。
首先创建一个对象,给予他get、set和tostring方法,生成方法的快捷键是alt+insert
public class stuBean {
private String string;
private Date date;
private List<String> list;
private Map<Integer,String> map;
private bean bean;
@Override
public String toString() {
return "stuBean{" +
"string='" + string + '\'' +
", date=" + date +
", list=" + list +
", map=" + map +
", bean=" + bean +
'}';
}
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public Map<Integer, String> getMap() {
return map;
}
public void setMap(Map<Integer, String> map) {
this.map = map;
}
public com.tx.springboot_test.bean.bean getBean() {
return bean;
}
public void setBean(com.tx.springboot_test.bean.bean bean) {
this.bean = bean;
}
我们此时打印这个对象是显示所有值都为null。
1、配置文件写属性的值
如果需要给这个对象的属性赋值,需要先在application.yml中写属性对应的值
对象的属性需要和application.yml配置文件中的相同,比如:user这个对象中的string属性
user:
String: 张三
然后在user类的String属性上加上注解@Value("${user.String}"),就是@Value注解中加上el表达式来获取application.yml文件中的值,这样我们就能让user类的String属性附上“张三”的值,
不同类型的参数在application.yml中的写法格式也不相同,但是获取值的方式都是相同的。
如:list集合
可以是单行格式
list: [伊朗,二郎]
也可以是多行格式
list:
- 张三
- 李四
map
可以是多行格式
map:
18 : 三郎
29 : 思量
也可以是单行格式
map: {18 : "${random.value}",12 : liulang}
#${random.value}是生成随机值
对象类型
bean:
id: ${random.int[5,10]}
username: ${user.String}${random.uuid}
#${random.int[5,10]}是生成5到10中的随机数
#${user.String}引用属性的值
#${random.uuid}通过uuid生成随机数
2、@ConfigurationProperties()
我们在获取值的时候需要给每个需要复制的属性上都添加一个@Value()注解,会很麻烦。
为了让简化操作,可以使用@ConfigurationProperties(prefix="user")注解
如此,我们就不需要去在每个属性上都写@Value(),@ConfigurationProperties()这个注解可以自动地去找user下与之对应的属性来赋值。
3、获取自定义文件的属性值
如果配置文件里面有很多配置,我们可能还在里面继续写属性的话,会影响阅读,所以我们自定义一个文件
注:使用自定义文件,文件名必须以.properties格式
在.properties文件格式里写属性赋值,只能使用单行格式
user.String= 张三
user.date= 2001-11-11
user.list= 伊朗,二郎
user.map.18 = ${random.value}
user.map.12 = liulang
user.bean.id=${random.int[5,10]}
user.bean.username= ${user.String}${random.uuid}
对象获取属性并赋值需要通过@PropertySource("classpath:文件路径")注解。