/*
Job 은 배치 처리의 최소 실행 단위
Job 을 만들기 위해 Spring 은 JobBuilderFactory 제공
이 클래스는 Spring Batch 설정에 의해서, 이미 Bean 으로 설정되어 있기때문에 생성자 주입으로 받을 수 있음
*/
private final JobBuilderFactory jobBuilderFactory;
public HelloConfiguration(JobBuilderFactory jobBuilderFactory){
this.jobBuilderFactory = jobBuilderFactory;
}
/*
job 이름 : helloJob (<- spring batch 를 실행하게 하는 key)
RunIdIncrementer : 항상 job 이 실행할 때마다 파라미터 id를 자동으로 생성주는 클래스
start() : job 실행 시, 최초로 실행할 step 설정할 메서드
*/
@Bean
public Job helloJob() {
return jobBuilderFactory.get("helloJob")
.incrementer(new RunIdIncrementer())
.start(this.helloStep())
.build();
}
private final StepBuilderFactory stepBuilderFactory;
public HelloConfiguration(JobBuilderFactory jobBuilderFactory,
StepBuilderFactory stepBuilderFactory){
this.jobBuilderFactory = jobBuilderFactory;
this.stepBuilderFactory = stepBuilderFactory; // 추가
}
/*
step : job 의 실행 단위 (step 도 job 처럼 Bean 으로 만들어야한다)
하나의 job 은 하나 이상의 step 을 가진다
tasklet : step 의 실행 단위 (또 다른 단위로는 chunk 가 있음)
*/
@Bean
public Step helloStep() {
return stepBuilderFactory.get("helloStep")
.tasklet((contribution, chunkContext) -> {
log.info("hello spring batch");
return RepeatStatus.FINISHED;
}).build();
}
➡️ IntelliJ - Run/Debug Configuration - Program argument - 실행하고 싶은 job 이름 작성
➡️ helloJob이라는 Job만 애플리케이션 실행할 때 실행하겠다는 설정
application.properties ➡️ application.yml 변경
names key 설정을 job.name 파라미터로 설정
- 이렇게 하면 설정값이 없어도 아무런 배치가 실행되지않아서, 모든 배치가 실행되는 것을 막을 수 있음
IntellJ Configuration도 이에 맞게 변경
package gilyeon.spring.batch.part1;
import lombok.extern.slf4j.Slf4j;
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.core.launch.support.RunIdIncrementer;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration // Spring 이 이 파일이 설정파일임을 인지할 수 있도록
@Slf4j // log 찍기 위해
public class HelloConfiguration {
/*
Job 은 배치 처리의 최소 실행 단위
Job 을 만들기 위해 Spring 은 JobBuilderFactory 제공
이 클래스는 Spring Batch 설정에 의해서, 이미 Bean 으로 설정되어 있기때문에 생성자 주입으로 받을 수 있음
*/
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
public HelloConfiguration(JobBuilderFactory jobBuilderFactory,
StepBuilderFactory stepBuilderFactory){
this.jobBuilderFactory = jobBuilderFactory;
this.stepBuilderFactory = stepBuilderFactory;
}
/*
job 이름 : helloJob (<- spring batch 를 실행하게 하는 key)
RunIdIncrementer : 항상 job 이 실행할 때마다 파라미터 id를 자동으로 생성주는 클래스
start() : job 실행 시, 최초로 실행할 step 설정할 메서드
*/
@Bean
public Job helloJob() {
return jobBuilderFactory.get("helloJob")
.incrementer(new RunIdIncrementer())
.start(this.helloStep())
.build();
}
/*
step : job 의 실행 단위 (step 도 job 처럼 Bean 으로 만들어야한다)
하나의 job 은 하나 이상의 step 을 가진다
tasklet : step 의 실행 단위 (또 다른 단위로는 chunk 가 있음)
*/
@Bean
public Step helloStep() {
return stepBuilderFactory.get("helloStep")
.tasklet((contribution, chunkContext) -> {
log.info("hello spring batch");
return RepeatStatus.FINISHED;
}).build();
}
}
https://melonplaymods.com/2023/06/11/crocodile-gena-and-cheburashka-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/minecraft-item-pack-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/fbi-unusual-lncidents-unit-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/parachute-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/scp-rrt-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/tarrant-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/boat-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/electro-from-the-movie-spider-man-high-voltage-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/rotten-melon-2-0-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/pirate-ship-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/mecha-godzilla-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/demon-slayer-mod-for-melon-playground-2/
https://melonplaymods.com/2023/06/11/pack-of-reelsnpc-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/animal-human-military-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/subway-surfers-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/hyundai-solaris-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/decorative-pipe-2-version-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/mutant-green-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/fnaf9-security-brichandreymaisak-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/big-house-mod-for-melon-playground/