๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring Batch

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 20์ผ์ฐจ - Spring Batch 2

๐Ÿ“Œ spring-batch 2

โœ”๏ธ ์Šคํ”„๋ง ๋ฐฐ์น˜ ์•„ํ‚คํ…์ฒ˜

  • ์Šคํ”„๋ง ๋ฐฐ์น˜๋Š” Jobํƒ€์ž…์˜ Bean์ด ์ƒ์„ฑ๋˜๋ฉด JobLauncher์— ์˜ํ•ด Job์„ ์‹คํ–‰ํ•œ๋‹ค.
    private final JobBuilderFactory jbf;
    
    @Bean
    public Job helloJob() {
    	 return jbf.get("helloJob")
         			...
                    	...
                    .buld();
    }
  • ์‹คํ–‰๋œ Job์€ Step ํƒ€์ž…์œผ๋กœ ๋“ฑ๋ก๋œ Bean์„ ์‹คํ–‰ํ•œ๋‹ค.
    private final StepBuilderFactory sbf;
    
    @Bean
    public Step helloStep() {
    	return sbf.get("helloStep")
                ...
                ...
            .build();
    }

 

โœ”๏ธ Chunk & Task

Chunk

  • ํ•˜๋‚˜์˜ ํฐ ๋ฉ์–ด๋ฆฌ์˜ ์ž‘์—…์„ n๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด ์‹คํ–‰ํ•œ๋‹ค.

Task

  • ํ•˜๋‚˜์˜ ์ž‘์—…์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค.
  • ์ฒ˜๋ฆฌ ๋Œ€์ƒ์„ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•ด๋„ ๋ฌด๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

 

โœ”๏ธ Chunk ๊ธฐ๋ฐ˜ Step

ItemReader -> ItemProcessor -> ItemWriter

 

ItemReader

  • ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๋Œ€์ƒ์„ ์ฝ์–ด์„œ ItemProcessor์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  • ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ ๋˜๋Š” DB์— ์ ‘๊ทผํ•˜์—ฌ ์ฝ๋Š”๋‹ค.

ItemProcessor

  • ItemReader๋ถ€ํ„ฐ ๋ฐ›์€ input์— ๋Œ€ํ•ด ๊ฐ€๊ณต ๋ฐ ํ•„ํ„ฐ๋ง์„ ๊ฑฐ์ณ ItemWriter์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  • ItemProcessor๊ฐ์ฒด๋Š” optional ํ•˜๋‹ค. (ํ•ด๋‹น ์ž‘์—…์„ Reader ํ˜น์€ Writer์—์„œ ์ฒ˜๋ฆฌ๊ฐ€๋Šฅ)

ItemWriter

  • ๋ฐฐ์น˜ ๋Œ€์ƒ ๊ฐ์ฒด, ๋ฐฐ์น˜ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • DB update ํ˜น์€ ์ด๋ฒคํŠธ ์•Œ๋ฆผ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

โœ”๏ธ BATCH_JOB_EXCUTION_PARAM test

return jbf.get("helloJob")
        .incrementer(new RunIdIncrementer()) 
        .start(helloStep())
        .build();

new RunIdIncrementer()์™€ Job์˜ ์ด๋ฆ„์ด BATCH_JOB_EXCUTION_PARAM์— ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ

 

โœ”๏ธ Job ์ธ์Šคํ„ด์Šค์˜ ์ƒ์„ฑ ๊ธฐ์ค€

Job์ด๋ฆ„๊ณผ Job parameters์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ƒ์„ฑ, ์žฌ์‹คํ–‰, ์žฌ์‹คํ–‰ ์‹คํŒจ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

  • ํ•˜๋‚˜์˜ Job์€ ๊ฐ™์€ parameter๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.
  • .incrementer(new RunIdIncrementer()) ์™€ ๊ฐ™์ด ์‹œํ€€์…œํ•œ ๊ฐ’์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ฃผ๋ฉด ๊ฐ™์€ ์ด๋ฆ„์˜ Job ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ‘  ์ˆ˜๊ฐ•์ธ์ฆ

 

ํŒจ์ŠคํŠธ์บ ํผ์Šค [์ง์žฅ์ธ ์‹ค๋ฌด๊ต์œก]

ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์˜์ƒํŽธ์ง‘, UX/UI, ๋งˆ์ผ€ํŒ…, ๋ฐ์ดํ„ฐ ๋ถ„์„, ์—‘์…€๊ฐ•์˜, The RED, ๊ตญ๋น„์ง€์›, ๊ธฐ์—…๊ต์œก, ์„œ๋น„์Šค ์ œ๊ณต.

fastcampus.co.kr

๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.