赞
踩
原本以为和@ConfigurationProperties(prefix = "person")
这个注解自动注入值的形式差不多、结果。。。。
@ConfigurationProperties匹配值的写法是这个的
@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
public String name;
private int age;
private Date birth;
private Map<String,Object> maps;
private List<String> list;
}
person:
name: 小明
age: 12
birth: 2018/9/9
maps:
k1: v1
k2: v2
list:
- a
- b
- c
这是@ConfigurationProperties注解的方式自动注入值、
注意的记得带get/set方法
但是在我使用@Value()注解注入的方式就报错了、解决方法
解决前的形式
test:
str: string
map:
key1: value1
key2: value2
list:
- fdsfs
- sdsd
- sfdf
java类
@Value("${test.map}")
private Map<String,String> map;
@Value("${test.list}")
private List<String> list;
@Value("${test.str}")
private String str;
解决后的形式
test:
str: string
map: "{key1: 'value1', key2: 'value2'}"
list: [fdsfs,aadas,sdds]
java类
@Value("#{${test.map}}")
private Map<String,String> map;
@Value("#{'${test.list}'.split(',')}")
private List<String> list;
@Value("${test.str}")
private String str;
错误的原因是无法解析占位符导致的、简单来说就是解析数据格式、和yaml中设置的值格式不匹配、导致异常。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。