spring Sping Boot YAML配置和列表

v8wbuo2f  于 2022-12-10  发布在  Spring
关注(0)|答案(3)|浏览(159)

我必须在Sping Boot 的YAML配置文件中集成一个列表,但不知道如何继续。
我已经看到了其他相关的问题:Spring Boot yaml configuration for a list of strings
也有同样的问题。
我应用了这个解决方案,并在周围工作,发现这个解决方案有点棘手。
有没有办法让列表使用@Value?
如果不是现在,将来会发生吗?
谢谢你,谢谢

jecbmhm3

jecbmhm31#

根据这个文档你可以在yaml. www.example.com中做一个列表http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-yaml
YAML列表表示为带有[index]取消引用符的属性键,例如以下YAML:

my:
   servers:
       - dev.bar.com
       - foo.bar.com

会转换成这些属性:

my.servers[0]=dev.bar.com
my.servers[1]=foo.bar.com

要使用SpringDataBinder实用程序(这就是@ConfigurationProperties所做的)绑定到这样的属性,您需要在java.util.List(或Set)类型的目标bean中有一个属性,并且您需要提供一个setter,或者用一个可变值初始化它,例如,这将绑定到上面的属性

@ConfigurationProperties(prefix="my")
public class Config {

    private List<String> servers = new ArrayList<String>();

    public List<String> getServers() {
        return this.servers;
    }
}
yyyllmsg

yyyllmsg2#

https://www.youtube.com/watch?v=d6Scea1JdMg&t=9s

请参考上面的链接。也许它会有帮助,展示了如何在Sping Boot 中读取application.yml中的不同数据类型。

qrjkbowd

qrjkbowd3#

有一个相关的GitHub线程:@Value注解应该能够从YAML属性注入List。该问题已经关闭,根据重复问题中的评论,他们现在不考虑实现支持。一旦他们决定解决该问题,该问题将重新打开。
在那之前,你可以按照@mark的答案中描述的方式,使用@ConfigurationProperties,GitHub上也提到过。

相关问题