2012-10-06 51 views
3

我正在使用STS 2.81中包含的Spring Batch模板創建Spring批處理作業,並使用Manning的Spring Batch in Action中的示例。我能夠毫無問題地執行大塊閱讀器和書寫器,但是我的代碼正在跳過處理器。我甚至試圖將所有對象清空,因爲它處理器中並沒有任何東西,對象仍然設法寫入,就好像處理器被忽略了一樣。我試着在處理器中調用System.out.println,但在終端中打印出來的不是。我最終通過註釋將配置從使用XML bean改變爲組件,並且它也不起作用。我不確定是否有一些設置我錯過了...我遵循Spring Batch in Action和SpringSource網站中的示例,並且一切看起來都很好......幫助!Spring批處理項目處理器未執行

下面的代碼:

<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; 
} 
} 
+0

你可以分享你productFlatFileReader配置? –

+0

正如Serkan所問,平面文件閱讀器和相關的線路圖配置可以更好地瞭解這個問題。從平面文件的每一行構建的實體是否也是Product? – firefox784

回答

0

你bean配置需要scope =「step」讓Spring Batch將bean識別爲批處理bean。

像:

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