You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:45:28