2017-11-28 4 views
0

스프링 부트 배치 XML을 Java Config로 변환하기. 아래 코드를 Java Config로 변경하십시오.Spring Batch XML에서 Java Config로 변환하기위한 태스크 릿

<batch:job id="batchJob1"> 
    <batch:step id="step"> 
     <batch:tasklet task-executor="taskExecutor" throttle-limit="${throttle.limit}"> 
      <batch:chunk reader="synchronizedProvisionReader" 
        processor="compositeItemProcessor" writer="subWriter" 
        commit-interval="${commit.interval}" 
          skip-limit="${skip.limit}" 
          retry-limit="${retry.limit}"> 
       <batch:retryable-exception-classes> 
        <batch:include class="org.springframework.dao.TransientDataAccessException"/>       
       </batch:retryable-exception-classes> 
       <batch:retry-listeners> 
        <batch:listener ref="batchRetryListener"/> 
       </batch:retry-listeners> 
       <batch:streams> 
        <batch:stream ref="fileItemReader" />       
       </batch:streams> 
       <batch:listeners> 
        <batch:listener ref="dateListener" />       
       </batch:listeners> 

      </batch:chunk> 
     </batch:tasklet> 
     <batch:listeners> 
      <batch:listener ref="debugStepListener" /> 
      <batch:listener ref="skipCheckingListener"/> 
     </batch:listeners> 
    </batch:step> 
    <batch:listeners> 
     <batch:listener ref="batchProvisionJobListener" /> 
    </batch:listeners> 
</batch:job> 

내 최초의 시도는하지이를 위해 태스크 릿을 구성하는 방법에 대한 아이디어를 얻고, 태스크 릿 막혔다.

@Configuration 
@EnableBatchProcessing 
public class BatchJob { 

    @Autowired 
    private JobBuilderFactory jobs; 

    @Autowired 
    private StepBuilderFactory stepBuilderFactory; 

    @Autowired 
    @Qualifier("taskExecutor") 
    private ThreadPoolTaskExecutor taskExecutor; 

    @Value("${throttle.limit}") 
    private int throttleLimit; 


    @Bean 
    public Job batchProvision(){ 
     return jobs.get("batchJob1").start(provisionStep()).build(); 
    } 

    @Bean 
    public Step step(){ 
     return stepBuilderFactory.get("provisionStep").tasklet(); 
    }    
} 

난 당신이 정확하게 문제를 직면하고있는 곳 이해할 수없는 나는 내가 XML

답변

1

에서와 동일 자바 설정에서 작업을 설정하는 방법 조언을 주시기 바랍니다. 그러나 이것은 XML에서 Java로 구성을 변환하는 방법입니다. 이 내가 커밋 간격 = 설정하는 방법

@Bean 
    public ItemProcessor<POJO, POJO> myProcessor1() { 
     return new myProcessor1(); 
    } 

    @Bean 
    public ItemProcessor<POJO, POJO> myProcessor2() { 
     return new myProcessor2(); 
    } 

    @Bean 
    public ItemProcessor<POJO, POJO> myProcessor3() { 
     return new myProcessor3(); 
    } 

    @Bean 
    public CompositeItemProcessor<POJO, POJO> mYCompositeItemProcessor() { 
     CompositeItemProcessor<POJO, POJO> mYCompositeItemProcessor = new CompositeItemProcessor<>(); 
     List<ItemProcessor<POJO, POJO>> list = new ArrayList<>(); 
     list.add(myProcessor1()); 
     list.add(myProcessor2()); 
     list.add(myProcessor3());  
     mYCompositeItemProcessor.setDelegates(list); 
     return mYCompositeItemProcessor; 
    } 



    @Bean 
    public Job myJob(JobBuilderFactory jobs) throws Exception { 
     return jobs.get("myJob") 
       .start(step1()) 
       .build() 
       .listener(myjobListener) 
       .build(); 

    } 
    @Bean 
    public TaskExecutor taskExecutor() { 
     ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();  
     taskExecutor.setCorePoolSize(5); 
     taskExecutor.setMaxPoolSize(5); 
     taskExecutor.setQueueCapacity(5); 
     taskExecutor.afterPropertiesSet(); 
     return taskExecutor; 
    } 

    @Bean 
    public Step step1(StepBuilderFactory stepBuilderFactory,) { 
     return stepBuilderFactory.get("step1").listener(mYCompositeItemProcessor()) 
       .<POJO, POJO> chunk(50).listener(ChunkListenerbean) 
       .reader(temReaderbean).listener(ItemReadListener) 
       .processor(mYCompositeItemProcessor()).listener(ItemProcessListener) 
       .writer(writerBean).listener(ItemWriteListenerbean).listener(SkipListenerbean).faultTolerant() 
       .skip(Exception.class).skipLimit(10) 
       .taskExecutor(taskExecutor()) 
       .build(); 
    } 
+0

"$ {commit.interval을}"희망이 도움 –

+0

나는 아무것도하지만, 커밋 간격입니다 자바 구성 청크 크기에 생각합니다. – Niraj