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

我在 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 );

    }

有没有正确的方法来做到这一点?我错过了什么吗?


白衣非少年
浏览 72回答 1
1回答

茅侃侃

我认为您正在正确地执行所有操作,将一个任意映射的所有条目复制到TreeMap使用自定义比较器排序的条目中。基本上你只有两个选择:清除和/putAll或创建一个新实例和putAll但是,我认为这不应该是配置负责的事情。您的预期订单可能具有一定的商业价值,具体取决于其用途。因此排序应该发生在使用配置值的代码中。但话又说回来,请参阅上面的两个选项。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java