我在 Spring Boot 应用程序中有以下配置属性:@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; }我想最终得到一个忽略键大小写的映射。当注入发生时,setValues 方法会收到一个没有比较器的树形图。我通过将设置器更改为以下内容来修复此问题: public void setValues(Map<String, String> values) { this.values.clear(); this.values.putAll(values ); }有没有正确的方法来做到这一点?我错过了什么吗?
1 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
我认为您正在正确地执行所有操作,将一个任意映射的所有条目复制到TreeMap
使用自定义比较器排序的条目中。基本上你只有两个选择:清除和/putAll
或创建一个新实例和putAll
但是,我认为这不应该是配置负责的事情。您的预期订单可能具有一定的商业价值,具体取决于其用途。因此排序应该发生在使用配置值的代码中。但话又说回来,请参阅上面的两个选项。
添加回答
举报
0/150
提交
取消