👉설정
Maven & yml 기준
다중 연결한 DB = h2 , mariadb
------------------------------------------------------------------------------------------------------------------------------------------------
Batch의 기본 구조를 만들어보기 전에 DB를 먼저 연결해주었다.
이왕 연결해주는거 yml에 다중 DB 연결을 연습해보려 2개를 연결했습니다.
h2 Maven 설정
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
mariadb Maven 설정
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.0.7</version>
</dependency>
yml에 다중 DB 설정하기
spring:
profiles:
active: local
---
spring:
config:
activate:
on-profile: local
datasource:
hikari:
jdbc-url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
username: sa
password:
driver-class-name: org.h2.Driver
---
spring:
config:
activate:
on-profile: mariadb
datasource:
url: jdbc:mariadb://localhost:3306/batch
username: batch
password: batch
driver-class-name: org.mariadb.jdbc.Driver
batch:
jdbc:
initialize-schema:always
- h2 DB 와 mariadb를 설정해 주었다.
- initialize-schema:always 설정해주면서 배치를 실행하면 자동으로 테이블이 생성되게 했다.
- yml 은 용어의 줄이 다르거나 위치가 한 칸이라도 다르면 실행이 안된다.... <짜증....😒>
- DB의 실행은 어떤 방식으로 설정해서 하는가는??
- Active profiles에 설정한 이름을 지정해주면 된다.
😎이제 본격적으로 기본적인 Spring Batch 의 코드를 만들어 보자
현재 패키지 구조
BatchApplication
package io.batch;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableBatchProcessing
@SpringBootApplication
public class BatchApplication {
public static void main(String[] args) {
SpringApplication.run(BatchApplication.class, args);
}
}
- @EnableBatchProcessing 설정을 해준다.
- 스프링 배치가 작동하기 위해 선언해야 하는 어노테이션
DBJobConfiguration<batch>
package io.batch;
import lombok.RequiredArgsConstructor;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@RequiredArgsConstructor
public class DBJobConfiguration {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Bean
public Job job(){
return jobBuilderFactory.get("job")
.start(step1())
.next(step2())
.build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception {
return RepeatStatus.FINISHED;
}
})
.build();
}
@Bean
public Step step2() {
return stepBuilderFactory.get("step2")
.tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception {
return RepeatStatus.FINISHED;
}
})
.build();
}
}
- 기본적인 batch 코드 설정
이제 프로젝트를 실행시켜보면 자동으로 스키마 테이블이 생성되어야 한다.
테이블 생성 완료
initialize-schema:always 설정해 주었기 때문에 프로젝트를 실행시키면 자동으로 테이블이 생성된다.
짠⭐ Spring Batch의 기본적인 코드를 만들어보았습니다
'Spring Batch' 카테고리의 다른 글
Spring Batch 도메인 Job (0) | 2022.08.19 |
---|---|
Spring Batch 테이블 의미 (0) | 2022.08.18 |
Spring Batch 스키마 생성 (0) | 2022.08.17 |
Spring Batch 기본 구조 (0) | 2022.08.13 |
Spring Batch 입문!! (0) | 2022.08.01 |