我的yml文件中有一个列表,我需要在我的java springboot应用程序中绑定,我该怎么做呢?
fruits:
- Apple
- Bannana
理想情况下,我想要像
这样的东西 @Value("${filters.siteID}")
List siteIDs;
答案 0 :(得分:5)
定义您的列表,如
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
似乎不起作用
答案 1 :(得分:3)
如果您想避免创建属性类并继续使用 @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
后的冒号是可选的,以避免在您使用多个配置文件时出现启动错误,并且该属性不存在。