[TIL-20260124] Spring Batch Reader ๊ตฌํ˜„

2026. 1. 24. 17:39ยทToday I Learned ๐Ÿง

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Today I Lean ...

Kotlin/Spring ์ •์‚ฐ ์‹œ์Šคํ…œ ํŒŒํŠธ ๊ฐ•์˜์—์„œ Reader ๊ตฌํ˜„ ๋‚ด์šฉ์„ ๋ณต์Šตํ–ˆ๋‹ค.

 

 

Reader ๊ตฌํ˜„ 

@Configuration
class DeliveryCompletedItemReaderConfig {
    companion object {
        const val CHUNK_SIZE = 500
        fun getStartDateTime(): ZonedDateTime =
            ZonedDateTime.of(LocalDate.now(), LocalTime.MIN, ZoneId.of("Asia/Seoul"))

        fun getEndDateTime(): ZonedDateTime =
            ZonedDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIN, ZoneId.of("Asia/Seoul"))
    }

    @Bean
    @StepScope
    fun deliveryCompletedJpaItemReader(orderItemRepository: OrderItemRepository): RepositoryItemReader<OrderItem> =
        RepositoryItemReaderBuilder<OrderItem>()
            .name("deliveryCompletedJpaItemReader")
            .repository(orderItemRepository)
            .methodName("findByShippedCompletedAtBetween")
            .arguments(getStartDateTime(), getEndDateTime())
            .pageSize(CHUNK_SIZE)
            .sorts(mapOf("shippedCompletedAt" to Sort.Direction.ASC))
            .build()
}

 

 

RepositoryItemReader

  • Spring Batch์—์„œ ์ œ๊ณตํ•˜๋Š” ItemReader(๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ฑด์”ฉ ์ฝ์–ด์˜ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค) ๊ตฌํ˜„์ฒด
  • JPARepository๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค.

 

@StepScope

  • Job ์‹คํ–‰ ์‹œ์ ์— Bean์„ ์ƒ์„ฑํ•˜๋Š”  Spring Batch ์Šค์ฝ”ํ”„

 

๊ฐ•์˜ ๋‚ด์šฉ์—๋Š” Scope๊ฐ€  ์—†์—ˆ๋Š”๋ฐ (Sigletone) , ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋‚ ์งœ ํ•จ์ˆ˜์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฒ˜์Œ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์˜ ๋‚ ์งœ๋กœ ๊ณ ์ •๋˜์–ด๋ฒ„๋ฆฐ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ @StepScope ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ Step๋งˆ๋‹ค Bean์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค.

์ถ”ํ›„ ๊ฐ•์˜์— ๋ฆฌํŒฉํ† ๋ง ๋‚ด์šฉ์ด ํฌํ•จ๋˜์–ด ์žˆ๋˜๋ฐ, ๊ทธ๋•Œ ๋‹ค์‹œ Reader ์ƒ์„ฑ ๊ตฌํ˜„ ๋ถ€๋ถ„ ์ •๋ฆฌํ•ด๋ด์•ผ๊ฒ ๋‹ค.

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Today I Learned ๐Ÿง' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL-20260128] Nginx Basic Auth, Github Actions๋กœ .htpasswd ์ƒ์„ฑ  (0) 2026.01.28
[TIL-20260127] @AuthenticationPrincipal , Swagger JWT ์ธ์ฆ ์„ค์ •  (0) 2026.01.27
[TIL-20260122] ํ™˜๊ฒฝ์— ๋”ฐ๋ฅธ ๊ฐ’ ์„ค์ •ํ•˜๊ธฐ (Spring Environment, Kotlin buildList)  (0) 2026.01.22
[TIL-20260118] JPA ๋ณ€๊ฒฝ ๊ฐ์ง€ (Dirty Checking)  (3) 2026.01.18
[TIL-20260117] Spring JPA ์ปฌ๋Ÿผ์— ์ฝ”๋ฉ˜ํŠธ ๋‹ฌ๊ธฐ  (0) 2026.01.17
'Today I Learned ๐Ÿง' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [TIL-20260128] Nginx Basic Auth, Github Actions๋กœ .htpasswd ์ƒ์„ฑ
  • [TIL-20260127] @AuthenticationPrincipal , Swagger JWT ์ธ์ฆ ์„ค์ •
  • [TIL-20260122] ํ™˜๊ฒฝ์— ๋”ฐ๋ฅธ ๊ฐ’ ์„ค์ •ํ•˜๊ธฐ (Spring Environment, Kotlin buildList)
  • [TIL-20260118] JPA ๋ณ€๊ฒฝ ๊ฐ์ง€ (Dirty Checking)
ํ•ด๋‹ˆ ๐ŸŒฑ
ํ•ด๋‹ˆ ๐ŸŒฑ
๊ธฐ๋ก์ด ์ž์‚ฐ์ด๋‹ค ( •ฬ€แด—•ฬ )ูˆโœ๏ธ
  • ํ•ด๋‹ˆ ๐ŸŒฑ
    haeni.dev
    ํ•ด๋‹ˆ ๐ŸŒฑ
  • ๋งํฌ

    • github
    • velog
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (25)
      • ์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ (4)
      • Today I Learned ๐Ÿง (19)
      • ๋ถ„๋…ธ์˜ ํƒ€์ดํ•‘ ๋กœ๊ทธ ๐Ÿ”ฅ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ci/cd
    springboot
    AWS
    ๊ฐœ๋ฐœ์ž
    IT
    ๊ฐœ๋ฐœ
    til
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ๋ฐฑ์—”๋“œ
    ์ฝ”ํ…Œ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
ํ•ด๋‹ˆ ๐ŸŒฑ
[TIL-20260124] Spring Batch Reader ๊ตฌํ˜„
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”