如何在 JdbcPollingChannelAdapter 更新参数上设置非缓存 SqlParameterSource

How to set non-caching SqlParameterSource on JdbcPollingChannelAdapter update parameters

JdbcPollingChannelAdapter 中,我想我了解如何使用 ExpressionEvaluatingSqlParameterSourceFactory class 的 createParameterSourceNoCache() 方法来获得非缓存 SqlParameterSource 对象,可以通过其 setSelectSqlParameterSource() 方法应用于 JdbcPollingChannelAdapter 的 select 参数。

然而,当谈到更新参数时,我只看到可以通过 SqlParameterSourceFactory 通过 setUpdateSqlParameterSourceFactory() 方法设置更新参数。据我所知,无法将工厂设置为非缓存,只能调用工厂的非缓存创建方法来获取非缓存源对象。

我需要更新参数作为随时间变化的动态计算的自定义日期的结果。我有一个动态计算结果的静态方法,我希望我可以在 JdbcPollingChannelAdapter 上使用 SpEL 以与 select 参数相同的方式动态评估更新参数。这可能吗?

您可以扩展它并仍然以常规方式将其注入 JdbcPollingChannelAdapter:

public class NoCacheExpressionEvaluatingSqlParameterSourceFactory 
        extends ExpressionEvaluatingSqlParameterSourceFactory {

    @Override
    public SqlParameterSource createParameterSource(Object input) {
        return createParameterSourceNoCache(input);
    }

}