Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 Spring批处理项目处理器未执行_Java_Spring_Spring Batch - Fatal编程技术网

Java Spring批处理项目处理器未执行

Java Spring批处理项目处理器未执行,java,spring,spring-batch,Java,Spring,Spring Batch,我正在使用STS2.81中包含的Spring批模板创建Spring批处理作业,并使用Manning操作中Spring Batch中的示例。我能够毫无问题地执行区块读取器和写入器,但是我的代码跳过了处理器。我甚至尝试过在进入处理器时清空所有对象,但什么都没有,这些对象仍然能够像忽略处理器一样写入。我尝试在处理器内调用System.out.println,但在终端中没有输出任何信号。最后,我通过注释将配置从使用XMLBean更改为组件,但它也不起作用。我不确定是否有一些设置我错过了…我遵循了Spri

我正在使用STS2.81中包含的Spring批模板创建Spring批处理作业,并使用Manning操作中Spring Batch中的示例。我能够毫无问题地执行区块读取器和写入器,但是我的代码跳过了处理器。我甚至尝试过在进入处理器时清空所有对象,但什么都没有,这些对象仍然能够像忽略处理器一样写入。我尝试在处理器内调用System.out.println,但在终端中没有输出任何信号。最后,我通过注释将配置从使用XMLBean更改为组件,但它也不起作用。我不确定是否有一些设置我错过了…我遵循了Spring Batch in Action和SpringSource网站中的示例,一切看起来都很好…帮助

代码如下:

<batch:job id="job1">
    <batch:step id="step1"  >           
        <batch:tasklet transaction-manager="transactionManager" start-limit="100" >
            <batch:chunk reader="productFlatFileReader"
                         processor="productProcessor"
                         writer="productFlatFileWriter"
                         commit-interval="10" />
        </batch:tasklet>
    </batch:step>
</batch:job>

以下是处理器bean:

<bean id="productProcessor" class="com.test.training.processors.ProductProcessor" />

这是我试图执行的处理器类,但没有结果:

package com.test.training.processors;

import org.springframework.batch.item.ItemProcessor;
import org.springframework.stereotype.Component;
import com.test.training.entities.Product;

public class ProductProcessor implements ItemProcessor<Product, Product> {

@Override
public Product process(Product product) throws Exception {
    product.setDescription("Processor is WORKING!");
    return product;
    //return this.validateProductByProductIdentifier(product) ? null : product;
}

private boolean validateProductByProductIdentifier(Product product) {
    return product.getProduct_identifier() == 5 ? true : false;
}
}
package com.test.training.processors;
导入org.springframework.batch.item.ItemProcessor;
导入org.springframework.stereotype.Component;
导入com.test.training.entities.Product;
公共类ProductProcessor实现ItemProcessor{
@凌驾
公共产品过程(产品)引发异常{
product.setDescription(“处理器正在工作!”);
退货产品;
//返回此。validateProductByProductIdentifier(产品)?空:产品;
}
私有布尔validateProductByProductIdentifier(产品){
return product.getProduct_identifier()=5?真:假;
}
}

您的bean配置需要有scope=“step”,SpringBatch才能将bean识别为批处理bean

比如:

<bean id="productProcessor" scope="step" class="com.test.training.processors.ProductProcessor" />


您可以分享您的productFlatFileReader配置吗?正如Serkan所问,平面文件读取器和相关的行映射器配置可以让您更深入地了解这个问题。从平面文件的每一行生成的实体也是产品吗?