Я создаю задание Spring Batch, используя шаблон Spring Batch, включенный в STS 2.81, и примеры из Spring Batch in Action от Мэннинга. Я могу без проблем запустить программу чтения и записи фрагментов, но мой код пропускает процессор. Я даже попытался обнулить все объекты, когда он попадает в процессор, и ничего, объекты все еще удается записать, как будто процессор игнорируется. Я попытался вызвать System.out.println в процессоре, но в терминале ничего не выводится. Наконец, я изменил конфигурацию с использования XML-компонента на компонент через аннотацию, и это тоже не сработало. Я не уверен, есть ли какой-то параметр, который мне не хватает ... Я следил за примерами как в 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 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;
}
}