작업제목 : 스프링(부트 포함) 배치 프로그램(SELECT 후 INSERT DB)
작업순서 :1. 스프링 부트 pom.xml 설정2. BatchVO.class, BatchConfiguration.class, BatchJob.class, BatchApplication.class 생성3. BatchConfiguration.class 작성4. BatchVO.class 작성
5. BatchJob.class 작성
6. BatchApplication.class 작성
7. 정상 작동되는지 테스트 및 확인
8. jar 파일로 생성
9. bat 파일 생성 후 bat 파일로 실행
10. 윈도우 스케줄러에 등록하여 특정 시간에 bat 파일이 작동되도록 구성
원하는 기능을 수행하는 Job 파일을 만들어야 한다.
package com.bootbatch.job;
import javax.sql.DataSource;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider;
import org.springframework.batch.item.database.JdbcBatchItemWriter;
import org.springframework.batch.item.database.JdbcCursorItemReader;
import org.springframework.batch.item.database.builder.JdbcCursorItemReaderBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.TaskExecutor;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.transaction.PlatformTransactionManager;
import com.bootbatch.main.UserVO;
import lombok.RequiredArgsConstructor;
//@Bean 어노테이션들을 Bean 처리 하기 위해 사용
@Configuration
//final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어 준다.
@RequiredArgsConstructor
public class UserJob {
// DI 처리
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactoy;
// DI 처리
@Autowired
private DataSource dataSource;
// DI 처리
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
@Bean
//step을 실행하는 Job 영역
public Job jdbcCursorItemReaderJob() {
return jobBuilderFactory.get("jdbcCursorItemReaderJob")
.start(jdbcCursorItemReaderStep())
.build();
}
@Bean
//reader, writer를 실행하는 step 영역
public Step jdbcCursorItemReaderStep() {
return stepBuilderFactoy.get("jdbcCursorItemReaderStep")
.<UserVO, UserVO>chunk(10)
//reader에서 받아서
.reader(jdbcCursorItemReader())
//writer에 넣는다.
.writer(jdbcCursorItemWriter())
.build();
}
@Bean
public JdbcCursorItemReader<UserVO> jdbcCursorItemReader(){
System.out.println("===>jdbcCursorItemReader 접속!!");
//다음과 같이 ReaderBuilder로 객체를 반환한다.
return new JdbcCursorItemReaderBuilder<UserVO>()
.fetchSize(10)
.dataSource(dataSource)
.rowMapper(new BeanPropertyRowMapper<>(UserVO.class))
.sql("SELECT COUNT FROM TOTAL_COUNT")
.name("jdbcCursorItemWriter")
.build();
}
@Bean
JdbcBatchItemWriter<UserVO> jdbcCursorItemWriter(){
JdbcBatchItemWriter<UserVO> itemWriter = new JdbcBatchItemWriter<UserVO>();
itemWriter.setDataSource(dataSource);
itemWriter.setSql("insert into insert_count values(:count)");
itemWriter.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<UserVO>());
//다음과 같이 itemWriter를 반환한다.
return itemWriter;
}
}
'[프로젝트제작&정리] > 스프링 배치 프로그램 제작' 카테고리의 다른 글
[스프링(부트 포함) 배치 프로그램] 9. 기타 설정 확인 (0) | 2020.03.31 |
---|---|
[스프링(부트 포함) 배치 프로그램] 8. BatchApplication.class 작성 (0) | 2020.03.31 |
[스프링(부트 포함) 배치 프로그램] 6. BatchVO.class 작성 (0) | 2020.03.24 |
[스프링(부트 포함) 배치 프로그램] 5. BatchConfiguration.class 작성 (0) | 2020.03.20 |
[스프링(부트 포함) 배치 프로그램] 4. BatchVO.class, BatchConfiguration.class, BatchJob.class, BatchApplication.class 생성 (0) | 2020.03.20 |