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

类型

您可以使用特殊的T运算符指定java.lang.Class( type) 的 intent 的 intent静态方法也是使用此运算符调用的。这StandardEvaluationContext使用TypeLocator查找类型,并使用StandardTypeLocator(可以替换)是在理解java.lang包。这意味着T()java.langpackage 不需要完全限定,但所有其他类型引用都必须是完全限定的。这 以下示例显示了如何使用T算子:spring-doc.cadn.net.cn

Class dateClass = parser.parseExpression("T(java.util.Date)").getValue(Class.class);

Class stringClass = parser.parseExpression("T(String)").getValue(Class.class);

boolean trueValue = parser.parseExpression(
		"T(java.math.RoundingMode).CEILING < T(java.math.RoundingMode).FLOOR")
		.getValue(Boolean.class);
val dateClass = parser.parseExpression("T(java.util.Date)").getValue(Class::class.java)

val stringClass = parser.parseExpression("T(String)").getValue(Class::class.java)

val trueValue = parser.parseExpression(
		"T(java.math.RoundingMode).CEILING < T(java.math.RoundingMode).FLOOR")
		.getValue(Boolean::class.java)

如果您的应用程序或框架管理自己的EvaluationContext,您可能需要 手动配置StandardTypeLocator使用特定的ClassLoader以确保 SPEL 表达式解析器能够可靠地定位用户类型。spring-doc.cadn.net.cn

例如,StandardBeanExpressionResolverspring-context模块 配置StandardTypeLocator使用 BeanClassLoader的相应BeanFactory.spring-doc.cadn.net.cn