表达式模板化
表达式模板允许将字面文本与一个或多个计算块混合使用。每个计算块都用您可以定义的前缀和后缀字符来限定。一个常见的选择是使用#{ }作为分隔符,如下例所示:
- 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 的一个实现版本,该实现默认将前缀和后缀分别配置为 #{ 和 }。