簡體   English   中英

如何通過@Value注入列表?

[英]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.

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