사용자 도구

사이트 도구


springframework:springboot:batch

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
springframework:springboot:batch [2018/08/04 16:11]
kwon37xi [SpringBoot와 SpringBatch]
springframework:springboot:batch [2021/09/06 16:06] (현재)
kwon37xi
줄 6: 줄 6:
 아래는 SpringBoot 에서 명령행(Command line)으로 Spring Batch Job을 실행하는 방법이다. 아래는 SpringBoot 에서 명령행(Command line)으로 Spring Batch Job을 실행하는 방법이다.
  
-  * [[https://github.com/kwon37xi/springboot2-batch-example|SpringBoot2 Batch Example]] +  * [[https://github.com/kwon37xi/springboot2-batch-example|SpringBoot2 Batch Example]] 예제 소스 
-===== 의존성 및 bootJar 설정(Boot 2.x 기준) =====+ 
 +===== 의존성 및 bootJar 설정 =====
 <code groovy> <code groovy>
 compile('org.springframework.boot:spring-boot-starter-batch') compile('org.springframework.boot:spring-boot-starter-batch')
  
 +// 2.x
 bootJar { bootJar {
     mainClassName = "my.boot.batch.BatchApplication"     mainClassName = "my.boot.batch.BatchApplication"
 +}
 +
 +// 1.x - 지정하지 않으면 자동으로 @SpringBootApplication 애노테이션이 붙은 클래스로 자동 지정됨.
 +bootRepackage {
 +    mainClass = "my.boot.batch.BatchApplication"
 } }
 </code> </code>
줄 58: 줄 65:
 </code> </code>
  
 +> ''DefaultBatchConfigurer'' 사용시에 이 클래스내에서 ''transactionManager''를 batchDataSource 용으로 생성해버려서 원래 애플리케> 이션의
 +> DataSourceTransactionManagerAutoConfiguration.DataSourceTransactionManagerConfiguration 가 작동하지 않게 된다.
 +> 따라서 항상 **애플리케이션용 DataSource에 대한 transactionManager를 항상 명시적으로 만들어주고 @Primary 설정**을 해줘야 한다.
  
 ===== 예제 Batch Job Configuration ===== ===== 예제 Batch Job Configuration =====
줄 112: 줄 122:
     job:     job:
       enabled: true       enabled: true
 +    initialize-schema: embedded
 +  main:
 +    web-application-type: NONE
 </code> </code>
 +  * ''spring.batch.initialize-schema'' 는 거의 항상 ''embdded''로 지정하며, 별도 DB 사용시에는 ''never''로 지정한다. ''always''인 경우는 거의 없다고 봄. 
 +  * SpringBoot 2.x 기준, ''spring-boot-starter-web'', ''spring-boot-starter-webflux''가 의존성에 없어야 하며, 만약 있다면 ''spring.main.web-application-type=NONE''으로 설정할 것. 
 +  * Spring Batch 를 integraition test 할 때 ''spring.batch.job.enabled=false'' 로 두고 ''JobLauncherTestUtils'' 로 런칭하게 하지 않으면 배치 Job이 두 번 실행된다. 첫번째 실행시 파라미터가 잘못 주입된다.
 ===== 실행 ===== ===== 실행 =====
 ''bootJar''로 jar를 생성하고 ''bootJar''로 jar를 생성하고
줄 125: 줄 140:
 </code> </code>
  
-**''spring.batch.job.names''는 쉼표로 구분하여 여러개도 지정 가능하다.**+  * **''spring.batch.job.names''는 쉼표로 구분하여 여러개도 지정 가능하다.** 
 +  * **''spring.batch.job.names''를 명시하지 않으면 모든 job 이 다 실행된다.** 
 +===== 완전 auto configuration ===== 
 +  * 완전히 AutoConfig 로 SpringBoot batch 를 설정할 때 ''@org.springframework.boot.autoconfigure.batch.BatchDataSource'' 를 사용하여 batch 용 dataSource 지정이 가능하다. 
 + 
 +==== spring-boot-starter-batch-web ==== 
 +  * [[https://github.com/codecentric/spring-boot-starter-batch-web|codecentric/spring-boot-starter-batch-web]] 
 +  * SpringBoot Web으로 batch Job 실행. 
 + 
 + 
 +===== 참고 ===== 
 +  * [[https://cheese10yun.github.io/spring-batch-basic/|Spring Batch 간단 정리 - Yun Blog | 기술 블로그]] 
 +  * [[https://spring.io/blog/2021/01/27/spring-batch-on-kubernetes-efficient-batch-processing-at-scale|Spring Batch on Kubernetes: Efficient batch processing at scale]]
springframework/springboot/batch.1533366668.txt.gz · 마지막으로 수정됨: 2018/08/04 16:11 저자 kwon37xi