복붙노트

[SPRING] ItemReader 및 ItemWriter를 사용하지 않고 Spring 배치 작업을 작성할 수 있습니까?

SPRING

ItemReader 및 ItemWriter를 사용하지 않고 Spring 배치 작업을 작성할 수 있습니까?

우리 프로젝트에서는 Spring Batch 2.2와 함께 Quartz 스케줄러를 작성했다.

내 요구 사항에 따라 모든 GlassFish 클러스터의 구성 캐시를 새로 고치기 위해 응용 프로그램 구성 등록 정보를 가져 오는 스케줄러를 실행하고 싶습니다.

그래서 File Read / Write 작업에 사용되는 ItemWriter와 ItemReader가 필요 없다. 그래서 ItemReader와 ItemWriter를 제거 할 수 있습니까?

내 직업 구성은 다음과 같습니다.

 <batch:job id="reportJob">
                 <batch:step id="step1">
                     <batch:tasklet>    
    <!--I want to remove ItemReader and ItemWriter as its not used -->          
                         <batch:chunk reader="ItemReader" writer="ItemWriter" 
                            commit-interval="10"> 
                        </batch:chunk> 
                    </batch:tasklet> 
                </batch:step> 

                <batch:listeners>
                    <batch:listener ref="simpleListener"/>
                </batch:listeners>
            </batch:job>

<bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
            <!-- Cache Refresh code is written here : JobLauncherDetails.java file -->
        <property name="jobClass" value="com.mkyong.quartz.JobLauncherDetails" />
        <property name="group" value="quartz-batch" />
        <property name="jobDataAsMap">
            <map>
                <entry key="jobName" value="reportJob" />
                <entry key="jobLocator" value-ref="jobRegistry" />
                <entry key="jobLauncher" value-ref="jobLauncher" />
                <entry key="param1" value="mkyong1" />
                <entry key="param2" value="mkyong2" />
            </map>
        </property>
    </bean>

JobClass JobLauncherDetails.java에서 캐시를 새로 고치려면 비즈니스 로직을 작성한다. 그래서 ItemReader와 ItemWriter를 제거 할 수 있습니까? 가능한 대안이 있습니까?

해결법

  1. ==============================

    1.작업 표시 줄 사용

    작업 표시 줄 사용

    <job id="reportJob">
      <step id="step1">
        <tasklet ref="MyTaskletBean" />
      </step>
      <!-- Other config... -->
    </job> 
    
    
    
    class MyTasklet implements Tasklet {
      @Override
      public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
      }
    }
    

    공식 문서에서 5.2 장의 태스크 릿에 대한 자세한 내용을 볼 수 있습니다.

  2. from https://stackoverflow.com/questions/22680648/can-we-write-a-spring-batch-job-without-itemreader-and-itemwriter by cc-by-sa and MIT license