我正在使用 STS 2.81 中包含的 Spring Batch 模板并使用 Manning 的 Spring Batch in Action 中的示例创建一个 Spring Batch 作业。我能够毫无问题地执行块读取器和写入器,但我的代码正在跳过处理器。我什至尝试在所有对象进入处理器时将其清空,但什么也没有,对象仍然设法被写入,就好像处理器被忽略了一样。我尝试在处理器中调用 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" />
这是我试图执行但无济于事的处理器类:
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;
}
}