我正在使用@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 启动功能加载属性,这确实是一种负担,因为您覆盖加载处理的可能性很小。