μλ ν¬μ€ν μμ μ΄μ΄μ§ λ΄μ©μ λλ€.
[springBoot] spring batch step startLimit
μλ ν¬μ€ν μμ μ΄μ΄μ§ λ΄μ©μ λλ€. [springBoot] spring batch JobScope, StepScope λͺ©μ°¨ μλ ν¬μ€ν μμ μ΄μ΄μ§ λ΄μ©μ λλ€. [springBoot] spring batch allowStartIfComplete λͺ©μ°¨ μλ ν¬μ€ν μμ μ΄μ΄μ§ λ΄μ©μ λλ€.
yaga.tistory.com
κ°μ²΄μ λ°μ΄ν°λ₯Ό μ½μ΄μ delimited, formatted λ°©μμ μ μ©ν΄μ νμΌμ μ°λ μμ
JobTestConfig
package com.dev.lsy.springbatchremind.batch;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.ExitStatus;
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.JobScope;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.batch.core.launch.support.RunIdIncrementer;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.ItemWriter;
import org.springframework.batch.item.file.builder.FlatFileItemWriterBuilder;
import org.springframework.batch.item.json.JacksonJsonObjectMarshaller;
import org.springframework.batch.item.json.builder.JsonFileItemWriterBuilder;
import org.springframework.batch.item.support.ListItemReader;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.FileSystemResource;
import java.util.Arrays;
import java.util.List;
@Slf4j
@RequiredArgsConstructor
@Configuration
public class JobTestConfig {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Bean
//job
public Job job1() {
return jobBuilderFactory.get("job1")
//jobParameter μλ μ¦κ°
.incrementer(new RunIdIncrementer())
.start(step1())
.build();
}
@Bean
//step
public Step step1() {
return stepBuilderFactory.get("step1")
//chunk κΈ°λ° μμ
.<Person, Person>chunk(10)
.reader(customReader())
//μ¬κΈ°λ§ λ€λ₯΄λ€.
.writer(customWriter())
.build();
}
//reader
@Bean
public ListItemReader customReader() {
//ν
μ€νΈ 리μ€νΈ(μ¬κΈ°λ λμΌ)
List<Person> list = Arrays.asList(
new Person(1L, "μμ΄μΈλ§¨", 51),
new Person(2L, "ν λ₯΄", 10000),
new Person(3L, "νν¬", 52)
);
ListItemReader<Person> reader = new ListItemReader<>(list);
return reader;
}
@Bean
public ItemWriter<? super Person> customWriter() {
return new FlatFileItemWriterBuilder<Person>()
.name("flatFileWriter")
.resource(new FileSystemResource("output/output.txt"))
.formatted()
//id 2μλ μ«μ(d), nameμ 6μ λ¬Έμ(s), ageλ μ«μ(d)
.format("%-2d%-6s%-2d")
//.delimited() //ꡬλΆμ λ°©μμ μ΄ μ΅μ
μ΄ μΆκ°λλ€.
//.delimiter("#")
.names(new String[]{"id", "name", "age"})
.build();
}
}
κ°μΈ μ€ν°λ κΈ°λ‘μ λ©λͺ¨νλ 곡κ°μ΄λΌ νλ¦°μ μ΄ μμ μ μμ΅λλ€.
νλ¦° μ μμ κ²½μ° λκΈ λΆνλ립λλ€.
reference: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98
λ€μ λ΄μ©
[springBoot] spring batch jsonFileItemWriter
λͺ©μ°¨ μλ ν¬μ€ν μμ μ΄μ΄μ§ λ΄μ©μ λλ€. [springBoot] spring batch FlatFileItemWriter λͺ©μ°¨ μλ ν¬μ€ν μμ μ΄μ΄μ§ λ΄μ©μ λλ€. [springBoot] spring batch step startLimit μλ ν¬μ€ν μμ μ΄μ΄μ§ λ΄μ©μ λλ€. [spri
yaga.tistory.com
λκΈ