Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ExpressionEvaluationRequestHandlerAdvice Spring集成_Java_Spring_Spring Integration - Fatal编程技术网

Java ExpressionEvaluationRequestHandlerAdvice Spring集成

Java ExpressionEvaluationRequestHandlerAdvice Spring集成,java,spring,spring-integration,Java,Spring,Spring Integration,我正在使用SpringIntegration4.3版本开发sftp出站适配器 我能够成功地将文件发送到sftp位置,但我想将数据库记录更新为完成状态 我正在ExpressionEvaluationRequestHandlerAdvice中寻找一个选项,但无法找到如何从setOnSuccessExpressionString调用方法 尝试以下选项 @Bean public ExpressionEvaluatingRequestHandlerAdvice afterPut() { Exp

我正在使用SpringIntegration4.3版本开发sftp出站适配器

我能够成功地将文件发送到sftp位置,但我想将数据库记录更新为完成状态

我正在ExpressionEvaluationRequestHandlerAdvice中寻找一个选项,但无法找到如何从setOnSuccessExpressionString调用方法

尝试以下选项

@Bean 
public ExpressionEvaluatingRequestHandlerAdvice afterPut() {

    ExpressionEvaluatingRequestHandlerAdvice advice = new ExpressionEvaluatingRequestHandlerAdvice();
    StandardEvaluationContext context = new StandardEvaluationContext();
    ///context.setBeanResolver((BeanResolver) new SftpPutBean());

    ExpressionParser parser = new SpelExpressionParser();
    try {
        context.registerFunction("mymethod", SftpPutBean.class.getDeclaredMethod("mymethod", new Class[] { String.class }));
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    } catch (SecurityException e) {
        e.printStackTrace();
    }

    //String abc 

    String helloWorldReversed = parser.parseExpression("#mymethod(headers['transmissionId'])").getValue(advice, String.class);


    advice.setOnSuccessExpressionString("helloWorldReversed");
    advice.setPropagateEvaluationFailures(true);
    return advice;
}

public void mymethod(String id) { 
    try { 
        TransmissionQueue abc = transmissionQueueDataService.findById(Integer.parseInt(id)); 
        abc.setStatus("COMPLETED"); 
        transmissionQueueDataService.saveTransmissionQueue(abc); 
    } catch (Exception e) { 
        e.printStackTrace(); 
    }
}

您需要向Spring集成评估上下文工厂注册函数

要通过Java配置提供SpEL函数,您应该为每个函数声明一个SpelFunctionFactoryBean。上述示例可按如下方式配置:


谢谢你,加里。。。我做到了,现在效果很好:)
@Bean
public SpelFunctionFactoryBean xpath() {
    return new SpelFunctionFactoryBean(XPathUtils.class, "evaluate");
}