회사에서 신규 프로젝트를 하는데, 배치 서버를 구축하는 업무를 내가 맡게 되었다.
포스팅은 배치 서버를 구축하는 방법, Job을 생성하고 Tasklet 기반 Step과 Chunk 기반 Step에 대해서 다루어 볼 것이고,
Chunk기반 Step은 스프링에서 기본적으로 제공하는 Reader와 Writer에 대해서 다루어 볼 것이다.
업무는 멀티모듈과 스키마 기반 멀티테넌시 환경에서, 배치 서버를 구축하는 것인데, 이는 추후에 포스팅할 것이다.
첫 글에서는, 최신 스프링 배치 버전인 Spring Batch 5의 특징을 알아보고, 간단하게 구축하는 방법을 알아보자.
1. Spring Batch 5 변경점
https://docs.spring.io/spring-batch/docs/current/reference/html/whatsnew.html
What’s New in Spring Batch 5.0
Spring Batch 5.0 has the following major themes: Java 17 Requirement Major dependencies upgrade Batch infrastructure configuration updates Batch testing configuration updates Job parameters handling updates Execution context serialization updates SystemCom
docs.spring.io
위는 Spring Batch 5가 어떻게 바뀌었는지에 대한 공식문서이다.
간략하게 요약하자면,
1) Spring Batch 5부터는 Spring Framework 6으로 업그레이드되며, JAVA 17 이상의 버전이 필수로 요구된다.
2) Job과 Step을 생성하는 BuilderFactory를 사용하지 않고, JobBuilder, StepBuilder를 사용한다.
3) Spring Integration 6, Junit5를 지원한다.
4) @EnableBatchProcessing 에 새로운 속성을 부여(Datasource 또는 TransactionManager 명시 가능)할 수 있고, 생략도 가능하다.
Job과 Step의 Builder 생성 방식이 달라져서, 많이 바뀐 것 같지만 생각보다 적응하기 쉬운 것 같다.
2. 프로젝트 생성
spring.start.io에서 생성해주어도 된다.


아래와 같은 Gradle이 추가되어야 한다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-batch'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.batch:spring-batch-test'
}
버전을 명시하지 않으면 최신버전으로 추가.
3. DB 세팅
예제코드이므로, 간단하게 Docker-compose를 사용하여 postgresql 이미지를 받아 설정해 보자.
프로젝트의 루트 디렉토리에 docker-compose.yml 이름으로 파일을 하나 생성해준다.

작성은 아래처럼 하면 된다.

위 이미지를 compose하려면, 도커엔진이 깔려있어야 한다. DockerDesktop을 깔아서 실행만 시켜주면 알아서 도커엔진을 실행한다.
그럼 위쪽의 화살표 부분을 눌러 compose 해 주자.

그럼 위 코드처럼 user는 jjh, password는 jjh, DB는 blog로 pg세팅이 완료되고 구동까지 된 것이다.
4. application.properties 세팅
db를 설치했으니, 이제 프로젝트에 이 db를 쓴다고 명시를 해주면서 JPA설정도 해주자.

5. Entity 세팅
JPA 의존성과 설정을 추가해주었기 때문에, Entity를 추가해 주어야 한다.
나중에 사용할 디렉토리까지 포함하여 구조를 아래와 같이 생성한다.

domain 디렉토리 안에 Member클래스를 추가하고 아래와 같이 작성한다.

access=AccessLevel.PROTECTED를 설정해 준 이유는 무분별한 객체 생성에 대해 한번 더 체크할 수 있는 수단이 되기 때문이다.
대신 이걸 사용하려면 생성자에 @Builder를 붙여야 한다.
6. 구동 후 확인

다음 포스팅은 Batch를 설정하고 메타데이터를 추가하는 방법을 작성할 것이다.
'Spring > Spring Batch' 카테고리의 다른 글
Spring Batch 5 - 5. ItemReader (0) | 2023.10.22 |
---|---|
Spring Batch 5 - 4. Task 기반 step, Chunk 기반 step (0) | 2023.10.22 |
Spring Batch 5 - 3. Step 개요 (0) | 2023.10.20 |
Spring Batch 5 - 2. Batch 설정하기, Job (1) | 2023.10.20 |
회사에서 신규 프로젝트를 하는데, 배치 서버를 구축하는 업무를 내가 맡게 되었다.
포스팅은 배치 서버를 구축하는 방법, Job을 생성하고 Tasklet 기반 Step과 Chunk 기반 Step에 대해서 다루어 볼 것이고,
Chunk기반 Step은 스프링에서 기본적으로 제공하는 Reader와 Writer에 대해서 다루어 볼 것이다.
업무는 멀티모듈과 스키마 기반 멀티테넌시 환경에서, 배치 서버를 구축하는 것인데, 이는 추후에 포스팅할 것이다.
첫 글에서는, 최신 스프링 배치 버전인 Spring Batch 5의 특징을 알아보고, 간단하게 구축하는 방법을 알아보자.
1. Spring Batch 5 변경점
https://docs.spring.io/spring-batch/docs/current/reference/html/whatsnew.html
What’s New in Spring Batch 5.0
Spring Batch 5.0 has the following major themes: Java 17 Requirement Major dependencies upgrade Batch infrastructure configuration updates Batch testing configuration updates Job parameters handling updates Execution context serialization updates SystemCom
docs.spring.io
위는 Spring Batch 5가 어떻게 바뀌었는지에 대한 공식문서이다.
간략하게 요약하자면,
1) Spring Batch 5부터는 Spring Framework 6으로 업그레이드되며, JAVA 17 이상의 버전이 필수로 요구된다.
2) Job과 Step을 생성하는 BuilderFactory를 사용하지 않고, JobBuilder, StepBuilder를 사용한다.
3) Spring Integration 6, Junit5를 지원한다.
4) @EnableBatchProcessing 에 새로운 속성을 부여(Datasource 또는 TransactionManager 명시 가능)할 수 있고, 생략도 가능하다.
Job과 Step의 Builder 생성 방식이 달라져서, 많이 바뀐 것 같지만 생각보다 적응하기 쉬운 것 같다.
2. 프로젝트 생성
spring.start.io에서 생성해주어도 된다.


아래와 같은 Gradle이 추가되어야 한다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-batch'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.batch:spring-batch-test'
}
버전을 명시하지 않으면 최신버전으로 추가.
3. DB 세팅
예제코드이므로, 간단하게 Docker-compose를 사용하여 postgresql 이미지를 받아 설정해 보자.
프로젝트의 루트 디렉토리에 docker-compose.yml 이름으로 파일을 하나 생성해준다.

작성은 아래처럼 하면 된다.

위 이미지를 compose하려면, 도커엔진이 깔려있어야 한다. DockerDesktop을 깔아서 실행만 시켜주면 알아서 도커엔진을 실행한다.
그럼 위쪽의 화살표 부분을 눌러 compose 해 주자.

그럼 위 코드처럼 user는 jjh, password는 jjh, DB는 blog로 pg세팅이 완료되고 구동까지 된 것이다.
4. application.properties 세팅
db를 설치했으니, 이제 프로젝트에 이 db를 쓴다고 명시를 해주면서 JPA설정도 해주자.

5. Entity 세팅
JPA 의존성과 설정을 추가해주었기 때문에, Entity를 추가해 주어야 한다.
나중에 사용할 디렉토리까지 포함하여 구조를 아래와 같이 생성한다.

domain 디렉토리 안에 Member클래스를 추가하고 아래와 같이 작성한다.

access=AccessLevel.PROTECTED를 설정해 준 이유는 무분별한 객체 생성에 대해 한번 더 체크할 수 있는 수단이 되기 때문이다.
대신 이걸 사용하려면 생성자에 @Builder를 붙여야 한다.
6. 구동 후 확인

다음 포스팅은 Batch를 설정하고 메타데이터를 추가하는 방법을 작성할 것이다.
'Spring > Spring Batch' 카테고리의 다른 글
Spring Batch 5 - 5. ItemReader (0) | 2023.10.22 |
---|---|
Spring Batch 5 - 4. Task 기반 step, Chunk 기반 step (0) | 2023.10.22 |
Spring Batch 5 - 3. Step 개요 (0) | 2023.10.20 |
Spring Batch 5 - 2. Batch 설정하기, Job (1) | 2023.10.20 |