在我的春天啓動的應用程序(與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]’既不是一個數組,也不是一個列表,也不是一個地圖引用屬性;返回值爲[全部]「 –