spring batch : reader, processor, writer

This commit is contained in:
haerong22
2021-05-11 12:49:39 +09:00
parent 7464feea7b
commit ef554befa0
2 changed files with 10236 additions and 4 deletions

View File

@@ -1,5 +1,8 @@
package com.example.springbatch.application.job;
import com.example.springbatch.application.model.ArticleModel;
import com.example.springbatch.domain.entity.Article;
import com.example.springbatch.repository.ArticleRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.Job;
@@ -7,9 +10,17 @@ 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.item.ItemProcessor;
import org.springframework.batch.item.data.RepositoryItemWriter;
import org.springframework.batch.item.data.builder.RepositoryItemReaderBuilder;
import org.springframework.batch.item.data.builder.RepositoryItemWriterBuilder;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;
import org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
@Configuration
@Slf4j
@@ -18,6 +29,7 @@ public class CreateArticleJobConfig {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
private final ArticleRepository articleRepository;
@Bean
public Job createArticleJob() {
@@ -30,10 +42,38 @@ public class CreateArticleJobConfig {
@Bean
public Step createArticleStep() {
return stepBuilderFactory.get("createArticleStep")
.tasklet((contribution, chunkContext) -> {
log.info("STEP!!!!!");
return RepeatStatus.FINISHED;
})
.<ArticleModel, Article>chunk(10)
.reader(createArticleReader())
.processor(createArticleProcessor())
.writer(createArticleWriter())
.build();
}
@Bean
public FlatFileItemReader<ArticleModel> createArticleReader() {
return new FlatFileItemReaderBuilder<ArticleModel>()
.name("createArticleReader")
.resource(new ClassPathResource("Articles.csv"))
.delimited()
.names("title", "content")
.fieldSetMapper(new BeanWrapperFieldSetMapper<>())
.targetType(ArticleModel.class)
.build();
}
@Bean
public ItemProcessor<ArticleModel, Article> createArticleProcessor() {
return articleModel -> Article.builder()
.title(articleModel.getTitle())
.content(articleModel.getContent())
.build();
}
@Bean
public RepositoryItemWriter<Article> createArticleWriter() {
return new RepositoryItemWriterBuilder<Article>()
.repository(articleRepository)
.build();
}
}

File diff suppressed because it is too large Load Diff