我在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;
}
我想以一个忽略按键大小写的Map结尾。
发生注入时,setValues方法将接收没有比较器的树形图。
我通过将设置器更改为此:
public void setValues(Map<String, String> values) {
this.values.clear();
this.values.putAll(values );
}
是否有适当的方法来做到这一点?我想念什么吗?
答案 0 :(得分:1)
我认为您正在正确地进行操作,以使用自定义比较器将一个任意映射的所有条目复制到排序的TreeMap
中。基本上,您只有两个选项:clear和putAll
或创建一个新实例和putAll
但是,我不认为这应该由配置负责。您的预期订单可能会根据用途而具有一定的商业价值。因此,排序应在使用配置值的代码中进行。但是再次,请参见上面的两个选项。