[英]Spring 3+. Resolve properties by prefix in a placeholder
在我的Java類中,我有一個類型的字段,比如java.util.Properties或java.util.Map。 我希望Spring為該字段注入以給定前綴開頭的所有屬性。 理想情況下,通過在屬性注釋中指定通配符,像@Value(${prefix.*})
這樣的smth似乎不幸地工作。
我怎樣才能做到這一點?
AFAIK沒有直接的方法來實現您的目標。
但是,您可以將Spring EL
與org.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.