使用 Map 绑定到@ConfigurationProperties不会保留键的顺序



我正在使用@ConfigurationProperties从属性文件注入映射。下面是代码:

@ConfigurationProperties("product")
public class WebUtils {
private WebUtils() {
}
public static String getURLWithContextPath(HttpServletRequest request) {
    return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + request.getContextPath();
}
private static Map<String, String> solitaireProp = new LinkedHashMap<>();
public Map<String, String> getSolitaireProp() {
    return solitaireProp;
}
public static List<String> getSolitaireProperties(){
    List<String> solProp = new ArrayList<>();
    for(HashMap.Entry<String, String> entry : solitaireProp.entrySet()) {
        solProp.add(entry.getKey());
    }
    return solProp;
}}

代码工作正常,但它没有保留我在属性文件中的条目顺序,例如,如果属性文件输入是:

product.solitaireProp.lab=lab
product.solitaireProp.certificateNo=certificate_number
product.solitaireProp.shape=shape

但是我的LinkedHashMap的条目与上面的顺序不同。有谁知道如何维持秩序??

属性

(带或不带 Spring 引导(不旨在维护任何特定顺序。
如果维护顺序很重要,请不要使用经典属性,而是使用自己的方式读取文件并维护文件中元素的顺序。
作为替代方案,您可以重写加载属性的方式,但总的来说,如果您使用 Spring 启动功能加载属性,这确实是一种负担,因为您覆盖加载处理的可能性很小。

最新更新