Spring boot如何使用方括号评估属性[a、b、c]

Spring boot如何使用方括号评估属性[a、b、c],spring,spring-boot,spring-mvc,Spring,Spring Boot,Spring Mvc,我使用的是spring-boot-1.5.19,在我的应用程序中。yml我有以下条目 sample: image: size-array: [280, 420, 560, 840, 1120] 我使用以下代码访问上述属性 @Value("#{'${sample.image.size-array}'.split(',')}") public List<Integer> sizes; @Value(“#{${sample.image.size数组}.split(',')}

我使用的是spring-boot-1.5.19,在我的应用程序中。yml我有以下条目

sample:
  image:
    size-array: [280, 420, 560, 840, 1120]
我使用以下代码访问上述属性

@Value("#{'${sample.image.size-array}'.split(',')}")
public List<Integer> sizes;
@Value(“#{${sample.image.size数组}.split(',')}”)
公开名单的规模;
但我得到了错误,然后用下面的风格

@Value("#{sample.image.size-array}")
public List<Integer> sizes;
@Value(“#{sample.image.size数组}”)
公开名单的规模;

还有,我试过用绳子,但运气不好。非常感谢您的帮助。

您可以使用以下Spel Exp将数据解析为列表:

@Value("#{'${sample.image.size-array}'.replace('[', '').replace(']', '').split(',')}")
    private List<Integer> sizes ;
@Value(“#{${sample.image.size数组}.replace('[','').replace(']','').split(',')}”)
私人名单的大小;

您可以使用以下Spel Exp将数据解析到列表中:

@Value("#{'${sample.image.size-array}'.replace('[', '').replace(']', '').split(',')}")
    private List<Integer> sizes ;
@Value(“#{${sample.image.size数组}.replace('[','').replace(']','').split(',')}”)
私人名单的大小;

sq括号的具体原因是什么?如果是逗号分隔的元素,如:size array=280、420、560、840、1120,如果我将“${size array}”注入列表,列表将变为=[280、420,…]。。。。。。。。。。所以我看不到括号的用法。我知道如何用方括号进行解析,但这是它们的设计方式,因此我无法更改结构。所以你说,在属性文件中,字符串[280,…]是固定的,不能更改?我是否理解正确?是的,这是固定的任何特定原因,你有方括号?在一个逗号分隔的元素,如:大小数组=280,420,560,840,1120,如果我注入“${size array}”到一个列表中,列表变成=[280,420,…]。。。。。。。。。。所以我看不到括号的用法。我知道如何用方括号进行解析,但这是它们的设计方式,因此我无法更改结构。所以你说,在属性文件中,字符串[280,…]是固定的,不能更改?我理解正确了吗?是的,fixedIt不起作用。原因:java.lang.IllegalArgumentException:无法解析值“#{${sample.image.size数组}”中的占位符“sample.image.size数组”。replace('[','').replace(']','')。split(',')}”可以与.properties文件一起使用。这一定是一个问题/什么地方出了问题,我们正在用yml的@Value injection做什么,我正在阅读StackOverflow的其他链接,以防你发现有什么东西掉了链接。感谢将此添加到config类/Springboot引导类:@PropertySource(“classpath:application.yml”)这对我来说是有效的,但我仍然不明白为什么我需要这样做,因为它不起作用。原因:java.lang.IllegalArgumentException:无法解析值“#{${sample.image.size数组}”中的占位符“sample.image.size数组”。replace('[','').replace(']','')。split(',')}”可以与.properties文件一起使用。这一定是一个问题/什么地方出了问题,我们正在用yml的@Value injection做什么,我正在阅读StackOverflow的其他链接,以防你发现有什么东西掉了链接。感谢将此添加到config类/Springboot引导类:@PropertySource(“classpath:application.yml”)这对我来说是有效的,但我仍然不明白为什么需要这样做