向ExpressionEvaluatingSqlParameterSourceFactory传入静态方法调用表达式的正确语法
调用静态函数的正确SpEL语法说明
嘿,针对你问的ExpressionEvaluatingSqlParameterSourceFactory引用静态函数的问题,其实核心是用**Spring Expression Language (SpEL)**的标准静态方法调用语法,具体怎么用我给你一步步讲:
基础语法格式
要调用静态方法,你需要用T()包裹工具类的全限定类名,然后直接跟上静态方法的调用,格式如下:
T(全限定类名).静态方法名(参数...)
结合你的示例代码
假设你的DateTimeUtils所在的包是com.example.utils(记得替换成你实际的包名),那么对应的表达式就是:
T(com.example.utils.DateTimeUtils).currentDeliveryDate()
在ExpressionEvaluatingSqlParameterSourceFactory中使用的示例
Java配置方式
如果是用Java代码配置,你可以这样设置参数表达式:
import org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory; import java.util.Map; // 实例化并配置参数源工厂 ExpressionEvaluatingSqlParameterSourceFactory parameterSourceFactory = new ExpressionEvaluatingSqlParameterSourceFactory(); // 把静态方法调用的表达式绑定到参数名上 parameterSourceFactory.setParameterExpressions(Map.of( "deliveryDate", "T(com.example.utils.DateTimeUtils).currentDeliveryDate()" ));
XML配置方式
如果是用Spring XML配置,写法如下:
<bean id="sqlParameterSourceFactory" class="org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory"> <property name="parameterExpressions"> <map> <entry key="deliveryDate" value="T(com.example.utils.DateTimeUtils).currentDeliveryDate()"/> </map> </property> </bean>
注意事项
- 一定要确保类的全限定名正确,否则会找不到类;
- 静态方法必须是
public修饰的(你的代码里已经满足); - 另外,你的示例代码里
new DateTime( toda...应该是new DateTime(today)的笔误,记得修正哦~
内容的提问来源于stack exchange,提问作者Curtis Olson
相关产品推荐
相关产品推荐

