๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

์Šคํ”„๋ง ๋ฐฐ์น˜8

Spring Batch (9) JobParametersValidator ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” JobLauncher์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. JobLauncher๋Š” ์‹ค์ œ Spring Batch Job์„ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, Job & JobParameters๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ๋ฐฐ์น˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ JobExecution์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Spring Batch์—์„œ๋Š” BatchAutoConfiguration ํด๋ž˜์Šค ๋‚ด์˜ JobLauncherApplicationRunner ํด๋ž˜์Šค๊ฐ€ Job์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ JobParametersValidator ๊ธฐ๋ณธ ๊ฐœ๋… Job ์‹คํ–‰ ์‹œ ํ•„์ˆ˜์ ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ DefaultJobParametersValidator ๊ตฌํ˜„์ฒด๋ฅผ ์ง€์›ํ•˜๋ฉฐ, JobParametersValidator ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜๋„ .. 2022. 11. 13.
Spring Batch (8) JobLauncher ๐Ÿ“Ž JobLauncher ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” JobRepository์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. JobRepository๋Š” Spring Batch ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ JobInstance, JobExecution, StepExeuction ๋“ฑ Batch์™€ ๊ด€๋ จ๋œ ๋„๋ฉ”์ธ์˜ CRUD ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Spring Batch Job์˜ ์‹คํ–‰ ์ฃผ์ฒด์ธ JobLauncher์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ JobLauncher ๊ธฐ๋ณธ ๊ฐœ๋… Spring Batch Job์„ ์‹คํ–‰์‹œํ‚ค๋Š” ์—ญํ•  Job & JobParameters๋ฅผ ์ธ์ž๋กœ ๋ฐ›์œผ๋ฉฐ ์š”์ฒญ๋œ ๋ฐฐ์น˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ JobExecution์„ ๋ฐ˜ํ™˜ Spring Batch์—์„œ๋Š” BatchAutoConfiguration ํด๋ž˜์Šค ๋‚ด์— ์กด์žฌํ•˜๋Š” JobLauncherA.. 2022. 11. 11.
Spring Batch (7) JobRepository ๐Ÿ“Ž JobRepository ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Spring Batch์˜ ExecutionContext์— ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ExecutionContext๋Š” Spring Batch ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ง€์›ํ•˜๋Š” key/value ํ˜•์‹์˜ ๊ณต์œ  ๊ฐ์ฒด๋กœ Job์„ ์‹คํ–‰ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ Job ๊ฐ„์—๋Š” ๊ณต์œ ๊ฐ€ ์•ˆ๋˜์ง€๋งŒ, ๋™์ผํ•œ Job ๋‚ด์˜ ์„œ๋กœ ๋‹ค๋ฅธ Step ์‚ฌ์ด์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Batch Job ๋‚ด์˜ Step ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ฐ ์กฐ์ž‘์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ExecutionContext๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Spring Batch JobRepository์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์— Job & JobParameters๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐํšŒํ•œ ํ›„ JobIn.. 2022. 11. 8.
Spring Batch (6) ExecutionContext ๐Ÿ“Ž ExecutionContext ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Step, StepExecution์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” JobExecution ๋ฐ StepExecution ๊ฐ์ฒด์— ์กด์žฌํ•˜๋Š” ExecutionContext์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ) ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch ExecutionContext (JobExecution, StepExecution) ๐Ÿ“Œ ExecutionContext ๊ธฐ๋ณธ ๊ฐœ๋… Spring Batch ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ง€์›ํ•˜๋Š” key/value ํ˜•์‹ ๊ณต์œ  ๊ฐ์ฒด๋กœ Job์„ ์‹คํ–‰ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„ ๊ณต์œ  ๋ฒ”์œ„ Job ๋ฒ”์œ„ - ๊ฐ Job์˜ JobExecution์— ์ €์žฅ๋˜๋ฉฐ ์„œ๋กœ ๋‹ค๋ฅธ Job ๊ฐ„์—๋Š” ๊ณต์œ ๊ฐ€.. 2022. 11. 5.
Spring Batch (5) Step, StepExecution ๐Ÿ“Ž Step, StepExecution ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Job, JobInstance, JobParameter, JobExecution์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Job์„ ๊ตฌ์„ฑํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„์ธ Step, StepExecution ๊ฐ์ฒด์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ) ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch Step Spring Batch StepExecution ๐Ÿ“Œ Step ๊ธฐ๋ณธ ๊ฐœ๋… Step์€ ๋…๋ฆฝ์ ์ด๊ณ  ์ˆœ์ฐจ์ ์ธ Batch Job์„ ์บก์Аํ™”ํ•˜๋Š” ๋„๋ฉ”์ธ ๊ฐ์ฒด Step์—๋Š” ์‹ค์ œ Batch ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Œ Step์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ ๊ฐ„๋‹จํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Œ ๋ชจ๋“  Job์€ ํ•˜๋‚˜ ์ด์ƒ์˜ Step์œผ๋กœ.. 2022. 11. 3.
Spring Batch (4) Job, JobInstance, JobParameters, JobExecution ๐Ÿ“Ž Job, JobInstance, JobParameters, JobExecution ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Spring Batch์˜ Meta Data Schema์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Job์˜ ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ ๊ฐ์ฒด์ธ JobInstance, JobParameters, JobExecution ๊ฐ์ฒด์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ) ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch Job Spring Batch JobInstance Spring Batch JobParameters Spring Batch JobExecution ๐Ÿ“Œ Job ๊ธฐ๋ณธ ๊ฐœ๋… ๋ฐฐ์น˜ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ์ตœ์ƒ์œ„์˜ ๊ฐœ๋…์œผ๋กœ ์ „์ฒด ๋ฐฐ์น˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์บก์Аํ™”ํ•œ ์—”ํ‹ฐํ‹ฐ Job Configuration์„ ํ†ตํ•ด ์ƒ.. 2022. 11. 1.
Spring Batch (3) DB ์Šคํ‚ค๋งˆ ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch DB ์Šคํ‚ค๋งˆ ๋ถ„์„ ๐Ÿ“Œ Spring Batch DB ์Šคํ‚ค๋งˆ ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Spring Batch์˜ ๊ฐœ์š” ๋ฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ, ์„ธํŒ… ๋ฐ ๊ฐ„๋‹จํ•œ Job ์‹คํ–‰์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Spring Batch์˜ Meta Data Schema์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Meta Data Schema ์Šคํ”„๋ง ๋ฐฐ์น˜์˜ ์‹คํ–‰ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ๋“ค(Job, Step, JobParameters ๋“ฑ)์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ, ์—…๋ฐ์ดํŠธ, ์กฐํšŒ ๋“ฑ์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ‚ค๋งˆ ์ œ๊ณต ๊ณผ๊ฑฐ ๋ฐ ํ˜„์žฌ์˜ Batch ์‹คํ–‰์— ๋Œ€ํ•œ ์ •๋ณด(์„ฑ๊ณต, ์‹คํŒจ ์—ฌ๋ถ€)๋ฅผ ๊ด€๋ฆฌํ•จ์œผ๋กœ์„œ ๋ฐฐ์น˜์šด์˜ ๋ฐ ์žฅ์• ์™€ ๊ด€๋ จ๋œ ๋Œ€์ฒ˜ ๊ฐ€๋Šฅ DB์™€ ์—ฐ๋™ํ•  ๊ฒฝ์šฐ ํ•„์ˆ˜์ ์œผ๋กœ ๋ฉ”ํƒ€ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜์–ด์•ผ ํ•จ DB ์Šคํ‚ค.. 2022. 10. 30.
Spring Batch (2) ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ ๋ฐ ์˜์กด์„ฑ ์„ค์ •, Hello World ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch ํ”„๋กœ์ ํŠธ ์„ค์ • Spring Batch ์„ค์ • ๋‚ด๋ถ€ Spring Batch Hello World ๐Ÿ“Œ Spring Batch ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์€ IntelliJ, Java 11, Gradle, MySQL(Docker), H2, Spring Boot, Batch ๋“ฑ์„ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. (ํ”„๋กœ์ ํŠธ ์„ค์ • ๊ด€๋ จ ์„ค๋ช…์€ ์—†์œผ๋‹ˆ GitHub๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.) ๐Ÿ“Œ Spring Batch ์˜์กด์„ฑ ์„ค์ • ์Šคํ”„๋ง ๋ฐฐ์น˜๋ฅผ ์ž‘๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ฉ”์ธ ํด๋ž˜์Šค์— @EnableBatchProcessing ์–ด๋…ธํ…Œ์ด์…˜์„ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;.. 2022. 10. 29.
๋ฐ˜์‘ํ˜•