Spring Boot使用@Value注解注入Map、List注入失败踩坑
原本以为和@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中设置的值格式不匹配、导致异常。
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
检测数组中出现最多次数的元素及次数