表达式模板化

表达式模板允许将文字文本与一个或多个评估块混合在一起。每个评估块都用您可以定义的前缀和后缀字符界定。常见选择是使用#{ }作为界定符,如下例所示:

  • Java

  • Kotlin

String randomPhrase = parser.parseExpression(
		"random number is #{T(java.lang.Math).random()}",
		new TemplateParserContext()).getValue(String.class);

// 评估为 "random number is 0.7038186818312008"
val randomPhrase = parser.parseExpression(
		"random number is #{T(java.lang.Math).random()}",
		TemplateParserContext()).getValue(String::class.java)

// 评估为 "random number is 0.7038186818312008"

通过将文字文本'random number is '{ }界定符内部表达式的评估结果(在本例中为调用random()方法的结果)连接起来来评估字符串。parseExpression()方法的第二个参数是ParserContext类型。ParserContext接口用于影响如何解析表达式以支持表达式模板化功能。前面示例中使用的TemplateParserContext位于org.springframework.expression.common包中,是ParserContext的实现,默认配置前缀和后缀分别为{}