将Java.Util.Set加载到Spring ConfigurationProperties中

时间:2016-11-20 19:36:26

标签: java spring

关注Spring @ConfigurationProperties Class

@Component
@ConfigurationProperties(prefix = "prefix")
@EnableConfigurationProperties
public class config {
    private Set<String> mySet = new HashSet<>();
}

关注Yaml文件

prefix:
  mySet: !!set {'element1',  'element2'}

使用SnakeYaml版本1.16

导致以下错误:

  

引起:org.springframework.beans.InvalidPropertyException:无效   属性'messageDelivery [0]'的bean类   [location.Config]:   索引属性路径'mySet [0]'中引用的属性是   既不是数组也不是List也不是Map;返回值为[element1]

在序列化期间出现错误

更新

我试过这个yaml结构

prefix:
    mySet:
        element1
        element2

这导致一个Set只有一个值,即“element1 element2”,它连接在一起需要找出什么才能让我将元素彼此分开

3 个答案:

答案 0 :(得分:4)

我最终工作的结构需要添加一个逗号

prefix:
    mySet:
        element1,
        element2

答案 1 :(得分:0)

请尝试:

prefix:
    ? element1
    ? element2

这应该用于表示yaml文件中的一个集合。您可以在此处查看详细信息:https://learnxinyminutes.com/docs/yaml/

答案 2 :(得分:0)

我发现您共享的代码中有2个问题。

  1. mySet是私有的,我想知道Spring如何将数据加载到其中
  2. YAML格式错误,应该是
prefix:
   mySet:
     - element1
     - element2