在我的春天启动的应用程序(与snakeyaml依赖性1.16)使用YAML我试图根据关我application.yml文件的创建@ConfigurationProperties
复杂的数据结构。我想创建像下面的JSON是具有字符串键和数组值的地图的数据结构。Spring配置文件创建与YAML
mapName: {
"key1": ["elem0","elem1"],
"key2": ["hello","world"]
}
尝试如下
@Component
@ConfigurationProperties(prefix = "channel-broker")
@EnableConfigurationProperties
public class BrokerConfiguration {
private Map<String, Set<String>> broker = new HashMap<>();
public Map<String, Set<String>> getBroker() {
return broker;
}
}
我已经尝试了我的YAML下面创建一个Spring配置类
channel-broker:
broker: {message-delivery: ['all'], facebook: ['client1']}
尝试2
channel-broker:
message-delivery: ['all']
facebook: ['client1']
尝试3
channel-broker:
message-delivery:
- ['all']
facebook:
- ['client1']
我也试图在@ConfigurationProperties
类这样... new HashMap<String, Set<String>>
初始化HashMap中并没有工作或者
所有的尝试导致这个错误,使我相信它的错误转换为对象时不yaml语法有任何问题。
所致:org.springframework.beans.InvalidPropertyException:无效 属性 'brokerTest [消息交付] [0]' bean类的 [my.classpackage.clasname]: 属性,索引属性路径引用 “brokerTest [消息交付] [0]”既不是一个数组,也不是一个列表,也不是 地图;返回值为[全部]
是否可以创建这样的对象?我将如何做到这一点
-UPDATE-
如果我改变设置到一个ArrayList(或List接口)这个工作,但不是我要找的。改变这种
private Map<String, ArrayList<String>> brokerTest = new HashMap<>();
但需要这不符合设置接口工作,要么:
private Map<String, HashSet<String>> brokerTest = new HashMap<>();
这产生如我先前接收到的同样的错误,这是“在索引属性路径‘经纪人[消息交付] [0]’既不是一个数组,也不是一个列表,也不是一个地图引用属性;返回值为[全部]“ –