使用@Value注释解析List时,Spring SpEL不能使用空格字符

问题描述

我正在尝试使用SPeL解析字符串列表。 Param是使用命令行参数指定的,而不是.properties文件当我在String文字中不使用空格字符时,一切正常,但是当我这样做时,我得到了一个解析异常。

编辑:我正在使用Spring Boot 2.2.9.RELEASE

带有@Value批注的列表:

@Value("#{${param}}")
private List<List<String>> param;

指定为命令行参数的属性不起作用:

--param={{'With Space','b'},{'x','y'}}

结果异常:

Caused by: org.springframework.expression.ParseException: Expression [#{{{'With}] @4: Found non terminating string literal starting at position 4

这确实有效:

--param={{'WithoutSpace','y'}}

是否可以使用包含空格字符的String元素解析此类List?

解决方法

命令行参数应为:

--param="{{'With Space','b'},{'x','y'}}"

要正确解析!请注意,在"之后并在末尾的--param值周围加上引号=