簡體   English   中英

春天3+。 通過占位符中的前綴解析屬性

[英]Spring 3+. Resolve properties by prefix in a placeholder

在我的Java類中,我有一個類型的字段,比如java.util.Properties或java.util.Map。 我希望Spring為該字段注入以給定前綴開頭的所有屬性。 理想情況下,通過在屬性注釋中指定通配符,像@Value(${prefix.*})這樣的smth似乎不幸地工作。

我怎樣才能做到這一點?

AFAIK沒有直接的方法來實現您的目標。

但是,您可以將Spring ELorg.springframework.core.io.support.PropertiesLoaderSupport自定義實現結合使用。

首先擴展PropertiesLoaderSupport或其任何子類 )。 引入一個方法( 比如filterProps ),它將返回帶有過濾屬性的java.util.Properties對象,如下所示

public class CustomPropertyLoader extends PropertiesLoaderSupport {

public Properties filterProperties(String prefix){
    Properties temp = new Properties();

    for(Properties props : this.localProperties){
        /* 
        * Iterate over props and filter them as 
        * per prefix (or any custom logic) to temp
        */
    }
    return temp;
}

}

提示 - 您可以將正則表達式用於更多通用方案而不是String作為方法參數。

第二個定義上面類的相應bean

<bean id="customPropertyLoader" class="x.y.z.CustomPropertyLoader">
    <property name="locations" value="classpath*:/**/some*.properties"/>
</bean>

最后在類java.util.Properties注釋類型為java.util.Properties的字段為@Value(#{customPropertyLoader.filterProperties('prefix.*')})

PS :請原諒任何編譯/語法錯誤,因為我沒有編譯並檢查設置; 但它應該工作。 如果沒有,請在評論中告知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM