我正在使用@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的条目与上面的顺序不一样。有谁知道如何维持秩序??
答案 0 :(得分:0)
属性(有或没有Spring Boot)不是为了维护任何特定的顺序而设计的
如果维护订单很重要,请不要使用经典属性,而是使用您自己的方式读取文件并维护文件中元素的顺序。
作为替代方案,您可以重写加载属性的方式,但实际上这是一种负担,如果您使用Spring Boot功能来加载属性,那么您很少有可能覆盖加载处理。