Spring @Value如何在默认值中转义冒号(:)

57

我有以下使用@Value注解的属性。我使用默认分隔符':”'定义了一个默认值。

@Value("${prop.url:http://myurl.com}")

http://myurl.com中,有没有一种方法可以转义冒号':',或者我必须在配置中定义不同的分隔符值?

3个回答

90
更新: 对于Spring 4.2及以上版本,不再需要单引号。Spring会将第一个冒号视为特殊字符,并使用其后所有内容作为一个字符串值。
对于Spring 4.2及以上版本,
@Value("${prop.url:http://myurl.com}")

对于之前的版本,我相信使用单引号就可以解决问题:

@Value("${prop.url:'http://myurl.com'}")

18
对于我在Spring 4.2上的情况,结果是:'http://myurl.com'(单引号是值的一部分)。简单地移除单引号就可以解决这个问题。如果我要猜测,它会在第一个冒号处进行拆分,前面的部分是变量,后面的部分是值。 - Amr Mostafa

2
如果您需要传递包含冒号的字符串列表并设置默认值,则可以这样做:
@Value("${parameterName:}#{T(java.util.Arrays).asList(\"abc:1\",\"def:2\")}")

private List<String> parameters;

0
在Spring 3.2版中,默认值可以不用引号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接