[英]How to inject list by @Value?
application.properties:
my.list=1,2,3,4
我想將此作為List
注入到@Value
字段中:
@Value("${my.list}")
List<Integer> list;
在網上,我發現必須注冊以下bean才能使其工作:
@Bean
public ConversionService conversionService() {
return new DefaultConversionService();
}
結果:
org.springframework.beans.TypeMismatchException: Failed to convert value of type [java.lang.String] to required type [java.util.List];
Caused by: java.lang.NumberFormatException: For input string: "1,2,3,4"
spring
不知何故不嘗試將其解析為列表。 為什么?
我知道可以將spEL與@Value("#{'${my.list}'.split(',')}")
,但是我明確地希望在解決方案中不要進行任何交談。
Spring正在尋找類似setList(String)的setter,因為沒有,試圖轉換該值。 您可以通過創建setList(String [] arg)方法解決該問題,方法是解析arg的每個元素,然后設置列表
setList(String[] arg){
if (arg == null){
this.list = new ArrayList<>();
} else {
this.list = new ArrayList<>(arg.length);
for (String s : arg){
this.list.add(Integer.parse(s));
}
}
}
我認為,即使Spring是私有的,Spring也可以訪問它,但是請先嘗試使用public,然后在可行的情況下降低知名度
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.