java - Spring Batch Item Processor 不执行

标签 java spring spring-batch

我正在使用 STS 2.81 中包含的 Spring Batch 模板创建一个 Spring Batch 作业,并使用 Manning 的 Spring Batch in Action 中的示例。我能够毫无问题地执行块读取器和写入器,但我的代码正在跳过处理器。我什至尝试在所有对象进入处理器时将其清零,但什么也没有,对象仍然设法被写入,就好像处理器被忽略一样。我尝试在处理器中调用 System.out.println 但在终端中没有打印出任何内容。我最终通过注释将配置从使用 XML bean 更改为组件,但它也不起作用。我不确定是否有一些我遗漏的设置......我遵循了 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" />

这是我试图执行但无济于事的 Processor 类:
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;
}
}

最佳答案

您的 bean 配置需要具有 scope="step"以便 Spring Batch 将 bean 识别为批处理 bean。

喜欢:

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

关于java - Spring Batch Item Processor 不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755988/

相关文章:

java - 将 java jar stdout & stderr 记录到 linux 中的文件

java - Spring TimerFactoryBean 如何启动定时器任务

java - javafx 中的标签未随线程自动更新

java - Swagger 路线在 Spring Boot + Jersey 上返回 404

java - 使用 Spring Security 3 实现 CAS

java - 使用 spark 将 POST 正文解析为 java 对象

java - Spring batch Writer 直接将文件写入 ftp 位置,

java - 如何在 Spring Batch 中读取类 jdbcBatchItemWriter 的 bean 中的 hashmap

java - 骑士巡回赛不会超过第四步

java - Spring Batch - JdbcCursorItemReader 使用大型 MySQL 表抛出 OutOfMemoryError