如何使用@Value
注释注入字符串值列表。我正在使用Spring 4.1.2。
我试过了:
@Value(value = "top, person, organizationalPerson, user")
private List<String> userObjectClasses
然后基于spring el documentation for inline lists:
@Value(value = "{top, person, organizationalPerson, user}")
private List<String> userObjectClasses
这些尝试只会将给定值的字符串文字作为列表中的唯一元素。
修改
在这种情况下,我希望能够简单地对值进行硬编码,而不是从属性文件中读取。这种方法看起来有点不如:
private List<String> userObjectClasses = Arrays.asList(new String[] {"top", "person", "organizationalPerson", "user"});
过去,我使用spring的XML配置来连接bean,在这种情况下我可以这样做(假设bean有一个userObjectClasses
属性的公共setter):
<property value="userObjectClass">
<list>
<value>top</value>
<value>person</value>
<value>organizationalPerson</value>
<value>user</value>
</list>
</property>
使用基于注释的配置时是否存在模拟效果?
答案 0 :(得分:27)
list.of.strings=first,second,third
从属性文件中获取例如
然后使用SpEL:
@Value("#{'${list.of.strings}'.split(',')}")
private List<String> list;
修改强>
然后我认为你不需要为这类任务使用注释。您可以完成所有工作,就像您在@PostConstruct中所做的那样,以便初始化某些字段。