본문 바로가기
Spring Batch

Spring Batch initialize-schema 버전 별 설정 차이

by codeok 2024. 7. 6.
반응형

Spring Batch에서는 총 6개의 메타 테이블이 존재합니다.

 

Spring Batch의 메타 테이블은 스프링 배치를 실행하고 나서 Job, Step의 실행 이력을 추적이 가능하고 모니터링에도 사용이 가능합니다. 

파라미터가 동일한 Job은 실행하지 않게 설정도 가능하고 실패 지점부터 재시작 기능도 제공을 해줍니다.

 

Spring Batch 2.5.0 버전 미만은 application.yml에 spring.batch.initialize-schema 설정으로 메타 테이블 6개를 자동 생성해 줍니다.

 

Spring Batch 2.5.0 버전 이상부터는 application.yml 설정이 spring.batch.jdbc.initialize-schema 설정으로 spring.batch 앞에 jdbc라는 문구가 추가 되었습니다.

 

spring batch < 2.5.0 미만

  • spring.batch.initialize-schema

spring batch >= 2.5.0 이상

  • spring.batch.jdbc.initialize-schema 

 

버전별로 설정은 위와 같이 변경을 해주면 됩니다.

 

하단 글에서는 Spring Batch 라이브러리를 사용하면 자동 구성하는 설정과 실제로 2.5.0부터 initialize-schema 설정이 변경되었다는 내용도 코드에서 한 번 살펴보겠습니다.

 

출처 : https://docs.spring.io/spring-batch/reference/schema-appendix.html

 

BathAutoConfiguration.java와 BatchProperties.java 확인해 보기

빌드 도구인 Maven , Gradle로 spring-batch 라이브러리를 implementation 해서 사용을 하고 배치프로젝트 개발 후 실행하면 BatchAutoCnofiguration.java 로 자동 구성 설정이 되고 BatchProperties.java 정의된 설정값을 외부 주입(application.yml 등) 으로  설정들을 자바 객체로 사용 가능 합니다.

BathAutoConfiguration.java

Spring Batch 라이브러리를 사용하면 배치 실행 시 자동 구성으로 BatchAutoConfiguration.java가 설정됩니다.

 

BatchAutoConfiguration.java를 살펴보면 @EnableConfigurationProperties(BatchProperties.class)라는 구문이 있습니다.

@EnableConfigurationProperties 애노테이션은 @ConfigurationProperties 애노테이션을 작성한 class를 스프링 빈으로 자동 등록을 해서 외부 설정(application.yml)의 값들을 자바 객체에 바인딩을 해주고 코드에서 객체로 사용할 수 있게 하는 구문입니다.

 

BatchProperties.class에는 application.yml에서 spring.batch 이름으로 시작하고 사용할 수 있는 자바 객체들이 정의되어 있습니다. 실제로 존재하는지 BatchProperties.class도 하단에서 같이 한 번 살펴보겠습니다.

 

 

BathProperties.java

BatchProperties.java를 살펴보면 @ConfigurationProperties(prefix = "spring.batch") 설정으로  외부 설정파일(application.yml)에 spring.batch로 시작하는 속성들을 자바 객체로 바인딩해주는 설정입니다.

 

 

실제로 spring.batch.initialize-schema 설정이 @Deprecated가 되었다는 내용도 getInitializeSchema() 메서드에 존재합니다.

2.5.0 버전부터는 spring.batch.initialize-schema은 사용하지 말고 spring.batch.jdbc.initialize-schema를 사용하라고 작성되어 있습니다.

결론

spring batch 2.5.0 버전부터는 스프링 배치 메타 테이블을 생성하기 위해서는 spring.batch.initiailize-schema 대신에  spring.batch.jdbc.initialize-schema 설정을 사용해야 하는 것을 작성했습니다.

 

spring.batch 설정을 자동 구성하는 BatchAutoConfiguration.java와 BatchProperties.java도 같이 살펴봤습니다.

 

감사합니다.

반응형