Spring:如何使用@Value注释注入内联字符串列表

时间:2014-12-09 22:49:20

标签: java spring

如何使用@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>

使用基于注释的配置时是否存在模拟效果?

1 个答案:

答案 0 :(得分:27)

list.of.strings=first,second,third从属性文件中获取例如

然后使用SpEL

 @Value("#{'${list.of.strings}'.split(',')}") 
 private List<String> list;

修改

然后我认为你不需要为这类任务使用注释。您可以完成所有工作,就像您在@PostConstruct中所做的那样,以便初始化某些字段。