如何在springboot中将yaml列表绑定到java列表?

如何在springboot中将yaml列表绑定到java列表?,java,list,spring-boot,yaml,bind,Java,List,Spring Boot,Yaml,Bind,我的yml文件中有一个列表,我需要在我的JavaSpringBoot应用程序中绑定它,我该怎么做 水果: -苹果 -班纳纳 理想情况下,我想要像这样的东西 @Value(“${filters.siteID}”) 列出站点ID文档中有一个示例 像这样定义你的列表 my: fruits: - Apple - Bannana my: fruits: Apple,Banana 并创建一个config properties类来表示它: @Component

我的yml文件中有一个列表,我需要在我的JavaSpringBoot应用程序中绑定它,我该怎么做

水果:
-苹果
-班纳纳

理想情况下,我想要像这样的东西

@Value(“${filters.siteID}”)

列出站点ID

文档中有一个示例

像这样定义你的列表

my:
    fruits:
        - Apple
        - Bannana
my:
  fruits: Apple,Banana
并创建一个config properties类来表示它:

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

直接绑定到
@Value
似乎不起作用,因为
@Value
的工作方式

如果您希望避免创建属性类并继续使用
@Value
,并且如果您的列表不是很长,那么还有另一个机会

像这样定义你的列表

my:
    fruits:
        - Apple
        - Bannana
my:
  fruits: Apple,Banana
并使用它,例如

与科特林

@Value("#{'\${my.fruits:}'.split(',')}")
private lateinit var fruits: List<String>
@Value(“{'\${my.fruits:}.split(',')}”)
私有lateinit变量:列表
还是Java

@Value("#{'${my.fruits:}'.split(',')}")
private final List<String> fruits = new ArrayList<>();
@Value(“#{${my.fruits:}.split(',')}”)
私有最终列表结果=新的ArrayList();
注意:
fruits
之后的冒号是可选的,以避免在使用多个配置文件且所有配置文件中都不存在此属性时出现启动错误