为了账号安全,请及时绑定邮箱和手机立即绑定

Spring boot ConfigurationProperties - 注入带有比较器的

Spring boot ConfigurationProperties - 注入带有比较器的

白衣非少年 2023-07-28 10:13:40
我在 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

但是,我认为这不应该是配置负责的事情。您的预期订单可能具有一定的商业价值,具体取决于其用途。因此排序应该发生在使用配置值的代码中。但话又说回来,请参阅上面的两个选项。


查看完整回答
反对 回复 2023-07-28
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信