我正在进行spring批处理应用程序以从数据库获取数据并最终更新数据库中的一些记录 . 问题是没有调用 ItemProcessorItemWriter .

这是我的配置文件 .

<job id="BpmJob" xmlns="http://www.springframework.org/schema/batch">
  <step id="step1">
    <tasklet transaction-manager="transactionManager">
      <chunk reader="pagingItemReader" processor="testApp" writer="itemWriter" commit-interval="1" />
    </tasklet>
  </step>
</job>

<bean id="pagingItemReader" class="com.tcs.controller.BpmReader" scope="step" />        
<bean id="testApp" class="com.tcs.controller.BpmProcess" scope="step" />
<bean id="itemWriter" class="com.tcs.controller.BpmWriter" scope="step" />

我定制了 ItemProcessor 和项目编写者 .

@Component
 public class BpmWriter implements ItemWriter<List<User>> {        

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void write(List<? extends List<User>> userList) throws Exception {
        for(int i=0;i<userList.size();i++){
        User user=(User)userList.get(i);
            try{
                String query="update com_tt_bpm_batch set status =:status where seqNo =:seqNo";
                SqlParameterSource namedParameters = new MapSqlParameterSource();  
                  ((MapSqlParameterSource) namedParameters).addValue("status","INACTIVE");  
                  ((MapSqlParameterSource) namedParameters).addValue("seqNo",user.getSeqNo());  
                  jdbcTemplate.update(query, namedParameters); 
                logger.info("updation is successful for seqNo "+user.getSeqNo());
            }catch(Exception e){
                logger.error("exception at updating the status to inactive ..");
                logger.error(e.getStackTrace());
            }
        }       
    }
}

Customzied ItemProcessor

@Component
public class BpmProcess implements ItemProcessor<User,User>{

    List<User>userList=new ArrayList<User>();
    private User userDetails;
    private static final Logger logger=Logger.getLogger(BpmProcess. class);
    @Override
    public User process(User user) {
        try{
            if(logger.isDebugEnabled()){
                logger.debug("process method begins");
            }   

         userDetails=new User();
        userDetails.setSeqNo(user.getSeqNo());
        userList.add(userDetails);
        if(logger.isDebugEnabled()){
            logger.debug("process method ends");
        }   

    }
        catch(Exception e){
        logger.error("Exception at data processing");
        logger.error(e.getMessage());
    }
        return userDetails;
    }
}