表达式模板
表达式模板允许将字面文本与一个或多个求值块混合使用。每个求值块使用您可以定义的前缀和后缀字符进行分隔。一个常见的选择是使用 #{ }
作为分隔符,如下例所示:
-
Java
-
Kotlin
String randomPhrase = parser.parseExpression(
"random number is #{T(java.lang.Math).random()}",
new TemplateParserContext()).getValue(String.class);
// evaluates to "random number is 0.7038186818312008"
val randomPhrase = parser.parseExpression(
"random number is #{T(java.lang.Math).random()}",
TemplateParserContext()).getValue(String::class.java)
// evaluates to "random number is 0.7038186818312008"
字符串的求值方式是将字面文本 'random number is '
与 #{ }
分隔符内部表达式的求值结果(在本例中是调用 random()
方法的结果)连接起来。parseExpression()
方法的第二个参数类型是 ParserContext
。ParserContext
接口用于影响表达式的解析方式,以支持表达式模板功能。上例中使用的 TemplateParserContext
位于 org.springframework.expression.common
包中,它是 ParserContext
的一个实现,默认将前缀配置为 #{
,后缀配置为 }
。