Skip to content

Spring Batch ‐ ItemReader

dnwls16071 edited this page Aug 7, 2025 · 4 revisions

📚 FlatFileItemReader

  • 2차원 데이터로 표현된 유형의 파일을 처리하는 ItemRead(Ex. Excel이나 CSV 등 행/렬로 표현된 데이터)
  • 일반적으로 고정된 위치로 정의된 데이터 필드나 특수 문자에 의해 구별된 데이터의 행을 읽는다.
  • Resource와 LineMapper 두 가지 요소가 필요하다.

[Resource]

  • FileSystemResource : new FileSystemResource("resource/path/config.xml")
  • ClassPathResource : new ClassPathResource("resource/path/config.xml")

[LineMapper]

  • 파일의 라인 한 줄을 Object로 변환해서 FileItemReader로 전달한다.
  • 단순히 문자열을 받기 때문에 문자열을 토큰화해서 객체로 매핑화하는 과정이 필요하다.
  • LineTokenizer와 FieldSetMapper를 사용해서 처리한다.

[FieldSet]

  • 라인을 필드로 구분해서 만든 배열 토큰을 전달하면 토큰 필드를 참조할 수 있도록 한다.
  • JDBC의 ResultSet과 유사하다.

[LineTokenizer]

  • 입력받은 라인을 FieldSet으로 변환해서 리턴한다.
  • 파일마다 형식이 다르기 때문에 문자열을 FieldSet으로 변환하는 작업을 추상화시켜야 한다.

[FieldSetMapper]

  • FieldSet 객체를 받아서 원하는 객체로 매핑해서 리턴한다.
  • JdbcTemplate의 RowMapper와 동일한 패턴을 사용한다.
스크린샷 2025-08-07 12 20 49

📚 FlatFileItemReader - delimetedlinetokenizer(구분자 방식)

  • delimetedlinetokenizer : 1개 라인의 String을 구분자 기준으로 나누어 토큰화 하는 방식
    • 이 때, 구분자의 기본값은 콤마(,)이다.
    • String line을 토큰화해서 FieldSet에게 넘겨주고 반환된다.
스크린샷 2025-08-07 12 38 24 스크린샷 2025-08-07 12 48 28

📚 FlatFileItemReader - fixedlengthtokenenizer(고정길이 방식)

  • fixedlengthtokenenizer : 1개 라인의 String을 사용자가 설정한 고정 길이 기준으로 나누어 토큰화 하는 방식
    • 범위는 문자열 형식으로 설정 가능하다.
스크린샷 2025-08-07 12 49 02

📚 FlatFileItemReader - Exception Handling

📚 XML StaxEventItemReader

📚 JsonItemReader

📚 DB - cursor & paging 이해

📚 DB - JdbcCursorItemReader

📚 DB - JpaCursorItemReader

📚 DB - JdbcPagingItemReader

📚 DB - JpaPagingItemReader

📚 ItemReaderAdapter

📖 Java

📖 Kotlin

📖 Coroutine

📖 Spring

📖 Spring Security

📖 Spring Batch

📖 Reactive Programming

📖 Database

📖 MySQL

📖 Redis

📖 JPA

📖 QueryDsl

📖 MSA

📖 Kafka

📖 Apache Flink

  • [Apache Flink - Apache Flink Architecture]
  • [Apache Flink - Stream Processing]
  • [Apache Flink - Data Stream API & Window]
  • [Apache Flink - State Management]

📖 HTTP

📖 AWS

📖 Docker

📖 Kubernetes

📖 CI/CD

📖 Nginx

📖 Monitoring🥈

  • [Monitoring - Log Concept]
  • [Monitoring - Log Level & Filter]
  • [Monitoring - Logback]
  • [Monitoring - Log Collection with ELK Stack]
  • [Monitoring - Log Monitoring with Kibana]
  • [Monitoring - Building a Monitoring System with Spring Boot Actuator]
  • [Monitoring - Server Monitoring with Prometheus and Grafana with Discord Alerts]

📖 Test

📖 Effective Java 3/E

📖 Kotlin Academy - Effective Kotlin

📖 Kotlin Academy - 핵심편

📖 스프링으로 시작하는 리액티브 프로그래밍

📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초 1

📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2

📖 Clean Code

📖 리팩토링 2판

📖 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식

📖 GraphQL

Clone this wiki locally