对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

表达式模板化

表达式模板允许将文字文本与一个或多个求值块混合。 每个求值块由您定义的前缀和后缀字符限定。一个常见的选择是使用 #{ } 作为分隔符,如下例所示:spring-doc.cadn.net.cn

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() 方法的第二个参数类型为 ParserContextParserContext 接口用于影响表达式的解析方式,以支持表达式模板功能。TemplateParserContext 的定义如下:spring-doc.cadn.net.cn

public class TemplateParserContext implements ParserContext {

	public String getExpressionPrefix() {
		return "#{";
	}

	public String getExpressionSuffix() {
		return "}";
	}

	public boolean isTemplate() {
		return true;
	}
}
class TemplateParserContext : ParserContext {

	override fun getExpressionPrefix(): String {
		return "#{"
	}

	override fun getExpressionSuffix(): String {
		return "}"
	}

	override fun isTemplate(): Boolean {
		return true
	}
}