簡體   English   中英

如何在springboot中將yaml列表綁定到java列表?

[英]How to bind yaml list to a java list in springboot?

我的 yml 文件中有一個列表,我需要將其綁定到我的 java springboot 應用程序中,我該怎么做?

fruits: - Apple - Bannana

理想情況下,我想要類似的東西

@Value("${filters.siteID}") List siteIDs;

該文檔在“24.6.1 Loading YAML”中有一個示例

像這樣定義你的清單

my:
    fruits:
        - Apple
        - Bannana

並創建一個配置屬性類來表示它:

@Component
@ConfigurationProperties(prefix="my")
public class FruitConfig {
    private final List<String> fruits = new ArrayList<String>();
    public List<String> getFruits() {
        return this.fruits;
    }
}

然后在你的代碼中需要配置的地方使用這個類

@Autowired
FruitConfig fruitConfig;

...  {
    System.out.println(fruitConfig.getFruits());
}

由於@Value工作方式,直接綁定到@Value似乎不起作用

如果您想避免創建屬性類並繼續使用@Value並且您的列表不是很長,那么還有另一個機會。

像這樣定義你的清單

my:
  fruits: Apple,Banana

並使用它,例如

使用 Kotlin

@Value("#{'\${my.fruits:}'.split(',')}")
private lateinit var fruits: List<String>

或 Java

@Value("#{'${my.fruits:}'.split(',')}")
private final List<String> fruits = new ArrayList<>();

注意:如果您使用多個配置文件並且此屬性不存在,則fruits后的冒號是可選的,以避免啟動錯誤。

暫無
暫無

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

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