我在 Spring Boot 應(yīng)用程序中有以下配置屬性:@Configuration@ConfigurationProperties(prefix = "test")public class ConfigProperties { private Map<String, String> values = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); public void setValues(Map<String, String> values) { this.values = values; }我想最終得到一個(gè)忽略鍵大小寫(xiě)的映射。當(dāng)注入發(fā)生時(shí),setValues 方法會(huì)收到一個(gè)沒(méi)有比較器的樹(shù)形圖。我通過(guò)將設(shè)置器更改為以下內(nèi)容來(lái)修復(fù)此問(wèn)題: public void setValues(Map<String, String> values) { this.values.clear(); this.values.putAll(values ); }有沒(méi)有正確的方法來(lái)做到這一點(diǎn)?我錯(cuò)過(guò)了什么嗎?
1 回答

茅侃侃
TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
我認(rèn)為您正在正確地執(zhí)行所有操作,將一個(gè)任意映射的所有條目復(fù)制到TreeMap
使用自定義比較器排序的條目中?;旧夏阒挥袃蓚€(gè)選擇:清除和/putAll
或創(chuàng)建一個(gè)新實(shí)例和putAll
但是,我認(rèn)為這不應(yīng)該是配置負(fù)責(zé)的事情。您的預(yù)期訂單可能具有一定的商業(yè)價(jià)值,具體取決于其用途。因此排序應(yīng)該發(fā)生在使用配置值的代碼中。但話又說(shuō)回來(lái),請(qǐng)參閱上面的兩個(gè)選項(xiàng)。
添加回答
舉報(bào)
0/150
提交
取消