知っておきたいSpring Batch Tips




2




3
4
https://www.slideshare.net/apkiban/ss-122881217 https://terasoluna-batch.github.io/guideline/current/ja/single_index.html
5
知っておきたいSpring Batch Tips
7


8
@Bean
public Step demo01Step(@Qualifier("demo01Takslet") Tasklet tasklet) {
return stepBuilderFactory.get("demo01Takslet")
.tasklet(tasklet).build();
}
@Bean
@StepScope
public Tasklet demo01Takslet() {
return new Tasklet() {
@Override
public RepeatStatus execute(StepContribution stepContribution,
ChunkContext chunkContext) throws Exception {
log.info("test tasklet 01.");
//
return RepeatStatus.FINISHED;
}
};
}
9
@Bean
@StepScope
public FlatFileItemReader fileItemReader(
@Value("#{jobParameters['inputFile']}") String filePath) {
//
FlatFileItemReader<OriginalPerson> fileItemReader = new FlatFileItemReader<>();
fileItemReader.setResource(new FileSystemResource(filePath));
fileItemReader.setLineMapper(lineMapper);
return fileItemReader;
}
@Bean
@StepScope
public ItemProcessor itemProcessor() {
return new ItemProcessor<OriginalPerson, ProcessedPerson>() {
@Override
public ProcessedPerson process(OriginalPerson originalPerson)
throws Exception {
// ( OriginalPerson-> ProcessedPerson )
return processedPerson;
}
};
}
10
@Bean
public Step demo02Step(ItemReader<OriginalPerson> reader,
ItemProcessor<OriginalPerson, ProcessedPerson> processor,
ItemWriter<ProcessedPerson> writer) {
return stepBuilderFactory.get("demo02Chunk")
.<OriginalPerson,ProcessedPerson> chunk(2)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
@Bean
@StepScope
public FlatFileItemWriter fileItemWriter(
@Value("#{jobParameters['outputFile']}") String filePath) {
//
FlatFileItemWriter<ProcessedPerson> fileItemWriter
= new FlatFileItemWriter<>();
fileItemWriter.setResource(new FileSystemResource(filePath));
fileItemWriter.setLineAggregator(aggregator);
return fileItemWriter;
}
11
FlatFileItemReader

StaxEventItemReader

JsonFileItemReader
FlatFileItemWriter

StaxEventItemWriter

JsonFileItemWriter
JdbcCursorItemReader

JdbcPagingItemReader

MyBatisCursorItemReader

MyBatisPagingItemReader

JpaPagingItemReader

HibernateCursorItemReader

HibernatePagingItemReader
JdbcBatchItemWriter

MyBatisBatchItemWriter

JpaItemWriter

HibernateItemWriter
MongoItemReader

JmsItemReader

AmqpItemReader
PassThroughItemProcessor

ValidatingItemProcessor

CompositeItemProcessor

JmsItemWriter

AmqpItemWriter
12
https://terasoluna-batch.github.io/guideline/current/ja/single_index.html#Ch02_SpringBatchArch_Arch_BusinessLogic
13
https://terasoluna-batch.github.io/guideline/current/ja/single_index.html#Ch02_SpringBatchArch_Arch_BusinessLogic
14

 

https://terasoluna-batch.github.io/guideline/current/ja/single_index.html#Ch03_ChunkOrTasklet
15
16
17
18
19

 

https://terasoluna-batch.github.io/guideline/current/ja/single_index.html#Ch03_ChunkOrTasklet
20
@Bean
@StepScope
public FlatFileItemWriter fileItemWriter(
@Value("#{jobParameters['outputFile']}") String filePath) {
//
FlatFileItemWriter<ProcessedPerson> fileItemWriter
= new FlatFileItemWriter<>();
fileItemWriter.setResource(new FileSystemResource(filePath));
fileItemWriter.setLineAggregator(aggregator);
return fileItemWriter;
}
21
@Bean
@StepScope
public FlatFileItemWriter fileItemWriter(
@Value("#{jobParameters['outputFile']}") String filePath) {
//
FlatFileItemWriter<ProcessedPerson> fileItemWriter
= new FlatFileItemWriter<>();
fileItemWriter.setResource(new FileSystemResource(filePath));
fileItemWriter.setLineAggregator(aggregator);
return fileItemWriter;
}
知っておきたいSpring Batch Tips
23
https://terasoluna-batch.github.io/guideline/current/ja/single_index.html#Ch02_SpringBatchArch_Arch_ProcessFlow
24
https://terasoluna-batch.github.io/guideline/current/ja/single_index.html#Ch02_SpringBatchArch_Arch_ProcessFlow
25
https://terasoluna-batch.github.io/guideline/current/ja/single_index.html#Ch02_SpringBatchArch_Arch_MetadataSchema
26
https://terasoluna-batch.github.io/guideline/current/ja/single_index.html#Ch02_SpringBatchArch_Arch_MetadataSchema
27
https://terasoluna-batch.github.io/guideline/current/ja/single_index.html#Ch02_SpringBatchArch_Arch_MetadataSchema
28
job_execution_id job_instance_id exit_code exit_message
1 1 COMPLETED
8 3 COMPLETED
16 15 FAILED
java.lang.RuntimeException
…
25 25 COMPLETED
batch_job_execution
step_execution_id step_name job_execution_id commit_count read_count filter_count write_count exit_code exit_message
1 demo01Takslet 1 1 0 0 0 COMPLETED
2 demo01Takslet 8 1 0 0 0 COMPLETED
9 demo01Takslet 16 0 0 0 0 FAILED
java.lang.Runt
imeException
…
18 demo02Takslet 25 3 5 0 5 COMPLETED
batch_step_execution
job_instance_id job_name job_key
1 demo01_01 d41d8cd98f00b204e9800998ecf8427e
3 demo01_01 399aaf8689acbf6a6ed21f7a137a4856
15 demo01_01 778538c8d55ed78ad27391d38c1abad8
25 demo01_02 ad6211d2dc9567640fdbe0e5be840d75
batch_job_instance
29
-- Autogenerated: do not edit this file
CREATE TABLE BATCH_JOB_INSTANCE (
JOB_INSTANCE_ID BIGINT NOT NULL PRIMARY KEY ,
VERSION BIGINT ,
JOB_NAME VARCHAR(100) NOT NULL,
JOB_KEY VARCHAR(32) NOT NULL,
constraint JOB_INST_UN unique (JOB_NAME, JOB_KEY)
) ;
CREATE TABLE BATCH_JOB_EXECUTION (
JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY ,
VERSION BIGINT ,
JOB_INSTANCE_ID BIGINT NOT NULL,
CREATE_TIME TIMESTAMP NOT NULL,
START_TIME TIMESTAMP DEFAULT NULL ,
END_TIME TIMESTAMP DEFAULT NULL ,
STATUS VARCHAR(10) ,
EXIT_CODE VARCHAR(2500) ,
EXIT_MESSAGE VARCHAR(2500) ,
LAST_UPDATED TIMESTAMP,
JOB_CONFIGURATION_LOCATION VARCHAR(2500) NULL,
constraint JOB_INST_EXEC_FK foreign key (JOB_INSTANCE_ID)
references BATCH_JOB_INSTANCE(JOB_INSTANCE_ID)
) ;
...
Spring Batch Jar DDL
30
Spring
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("classpath:org/springframework/batch/core/schema-h2.sql")
.build();
}
Spring Boot 

→ DB
spring.batch.initialize-schema=always # ON
spring.batch.initialize-schema=never # OFF


DB CI/CD 

DB


( ) -> ( )


31
https://docs.spring.io/spring-batch/docs/current/reference/html/index-single.html#metaDataArchiving
32
https://docs.spring.io/spring-batch/docs/current/reference/html/index-single.html#recommendationsForIndexingMetaDataTables
33
@Bean
public JsrJobParametersConverter jobParametersConverter() {
return new JsrJobParametersConverter(dataSource);
}
34


知っておきたいSpring Batch Tips
36
@SpringBootApplication
@EnableBatchProcessing
public class BatchDemo01Application {
public static void main(String[] args) {
SpringApplication.run(BatchDemo01Application.class, args);
}
...
$ java -cp ${CLASSPATH}
org.springframework.batch.core.launch.support.CommandLineJobRunner
<Config FQCN> <Job > <Job 1>=< 1> <Job 2>=< 2> ...
$ java -jar myapp.jar -Dspring.batch.job.names=<Job ※>
<Job 1>=< 1> <Job 2>=< 2> ...
37
@SpringBootApplication
@EnableBatchProcessing
public class BatchDemo01Application {
public static void main(String[] args) {
SpringApplication.run(BatchDemo01Application.class, args);
}
...
$ java -cp ${CLASSPATH}
org.springframework.batch.core.launch.support.CommandLineJobRunner
<Config FQCN> <Job > <Job 1>=< 1> <Job 2>=< 2> ...
$ java -jar myapp.jar -Dspring.batch.job.names=<Job ※>
<Job 1>=< 1> <Job 2>=< 2> ...
38
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#passing-command-line-arguments
39
@Bean
@BatchDataSource
public DataSource dsForJobRepos() {
return dataSourceForJobRepos;
}
// TransactionManager
@Bean
@Primary
public DataSource dsForApp() {
return dataSourceForApplication;
}
@Bean
public PlatformTransactionManager tmForApp(
@Qualifier("dsForApp") DataSource ds) {
return new DataSourceTransactionManager(ds);
}


40
41






42

More Related Content

PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
PDF
新しい並列for構文のご提案
PDF
Unified JVM Logging
PPTX
async/await のしくみ
PPTX
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
PDF
Where狙いのキー、order by狙いのキー
PPTX
Apache Avro vs Protocol Buffers
PDF
[JSUG SpringOne 2021 報告会]見えてきたSpring 6.0の方向性
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
新しい並列for構文のご提案
Unified JVM Logging
async/await のしくみ
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
Where狙いのキー、order by狙いのキー
Apache Avro vs Protocol Buffers
[JSUG SpringOne 2021 報告会]見えてきたSpring 6.0の方向性

What's hot (20)

PDF
まずやっとくPostgreSQLチューニング
PDF
Observableで非同期処理
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PPTX
WiredTigerを詳しく説明
PDF
これからSpringを使う開発者が知っておくべきこと
PPTX
ARM LinuxのMMUはわかりにくい
PDF
怖くないSpring Bootのオートコンフィグレーション
PDF
オブジェクト指向できていますか?
PDF
規格書で読むC++11のスレッド
PDF
Ormとの付き合い方
PPTX
2011年度 新3年生向け
PPTX
MongoDBの監視
PDF
中3女子が狂える本当に気持ちのいい constexpr
PDF
MongoDB〜その性質と利用場面〜
PDF
MongoDB概要:金融業界でのMongoDB
PDF
マイクロにしすぎた結果がこれだよ!
PPTX
さくっと理解するSpring bootの仕組み
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
PDF
PostgreSQLの運用・監視にまつわるエトセトラ
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
まずやっとくPostgreSQLチューニング
Observableで非同期処理
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
WiredTigerを詳しく説明
これからSpringを使う開発者が知っておくべきこと
ARM LinuxのMMUはわかりにくい
怖くないSpring Bootのオートコンフィグレーション
オブジェクト指向できていますか?
規格書で読むC++11のスレッド
Ormとの付き合い方
2011年度 新3年生向け
MongoDBの監視
中3女子が狂える本当に気持ちのいい constexpr
MongoDB〜その性質と利用場面〜
MongoDB概要:金融業界でのMongoDB
マイクロにしすぎた結果がこれだよ!
さくっと理解するSpring bootの仕組み
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
PostgreSQLの運用・監視にまつわるエトセトラ
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
Ad

Similar to 知っておきたいSpring Batch Tips (20)

PDF
Why Spring <3 Kotlin
PPT
比XML更好用的Java Annotation
PDF
RTF
Easy Button
DOC
code for quiz in my sql
PDF
Kotlin Generation
DOCX
culadora cientifica en java
DOCX
Advance Java Programs skeleton
PPTX
A GWT Application with MVP Pattern Deploying to CloudFoundry using Spring Roo
PDF
Backbone.js — Introduction to client-side JavaScript MVC
PPT
Spring Boot Introduction and framework.ppt
PDF
COScheduler In Depth
KEY
Android workshop
PDF
Google guava
PDF
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
PPTX
spring aop.pptx aspt oreinted programmin
PDF
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
PDF
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
DOCX
Sumsem2014 15 cp0399-13-jun-2015_rm01_programs
Why Spring <3 Kotlin
比XML更好用的Java Annotation
Easy Button
code for quiz in my sql
Kotlin Generation
culadora cientifica en java
Advance Java Programs skeleton
A GWT Application with MVP Pattern Deploying to CloudFoundry using Spring Roo
Backbone.js — Introduction to client-side JavaScript MVC
Spring Boot Introduction and framework.ppt
COScheduler In Depth
Android workshop
Google guava
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
spring aop.pptx aspt oreinted programmin
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Sumsem2014 15 cp0399-13-jun-2015_rm01_programs
Ad

More from ikeyat (6)

PDF
What's new in Spring Batch 5
PDF
What's New in Spring Boot 2.5
PDF
既存アプリケーションをJava11に対応させる際に 知っておくべきこと
PPTX
Spring IO Platform再考
PPTX
建築に学ぶマイクロサービス
PDF
Beginning Java EE 6 勉強会(7) #bje_study
What's new in Spring Batch 5
What's New in Spring Boot 2.5
既存アプリケーションをJava11に対応させる際に 知っておくべきこと
Spring IO Platform再考
建築に学ぶマイクロサービス
Beginning Java EE 6 勉強会(7) #bje_study

Recently uploaded (20)

PPTX
CNN LeNet5 Architecture: Neural Networks
PDF
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
PPTX
most interesting chapter in the world ppt
PDF
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
PDF
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
PDF
AI Guide for Business Growth - Arna Softech
PPTX
"Secure File Sharing Solutions on AWS".pptx
PPTX
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
PDF
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
PPTX
Advanced SystemCare Ultimate Crack + Portable (2025)
PPTX
GSA Content Generator Crack (2025 Latest)
PDF
BoxLang Dynamic AWS Lambda - Japan Edition
PDF
CCleaner 6.39.11548 Crack 2025 License Key
PDF
How Tridens DevSecOps Ensures Compliance, Security, and Agility
PPTX
Computer Software - Technology and Livelihood Education
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
DOCX
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
PPTX
Trending Python Topics for Data Visualization in 2025
DOC
UTEP毕业证学历认证,宾夕法尼亚克拉里恩大学毕业证未毕业
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
CNN LeNet5 Architecture: Neural Networks
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
most interesting chapter in the world ppt
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
AI Guide for Business Growth - Arna Softech
"Secure File Sharing Solutions on AWS".pptx
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
Advanced SystemCare Ultimate Crack + Portable (2025)
GSA Content Generator Crack (2025 Latest)
BoxLang Dynamic AWS Lambda - Japan Edition
CCleaner 6.39.11548 Crack 2025 License Key
How Tridens DevSecOps Ensures Compliance, Security, and Agility
Computer Software - Technology and Livelihood Education
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
Trending Python Topics for Data Visualization in 2025
UTEP毕业证学历认证,宾夕法尼亚克拉里恩大学毕业证未毕业
WiFi Honeypot Detecscfddssdffsedfseztor.pptx

知っておきたいSpring Batch Tips