![](/img/trans.png)
[英]Springboot @ConfigurationProperties load list from yaml not working
[英]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.