Inflearn brand logo image

인프런 커뮤니티 질문&답변

nhs0912님의 프로필 이미지
nhs0912

작성한 질문수

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

2장. 작전1: FlatFileItemReader (시스템의 마지막 기록을 읽어내다 ☠️)

구분자로 분이된 형식의 파일 읽기 소스 오류 문의

작성

·

52

1

  질문 가이드  


" 시스템 종결자의 지령이다. 질문하기 전에 이 규칙들을 숙지하도록. "

 

1. 코드 실행에 문제가 있다고?

전체 코드를 보여줘라. 단편적인 에러 메시지만으로는 아무것도 알 수 없다.

실행 환경도 알려달라. JDK 버전, 스프링 버전 등을 함께.

 

2. 오타를 발견했나?

즉시 제보하도록. 자네같은 날카로운 눈을 가진 동료가 필요하다.

 

3. 질문은 자유롭게

"이런 걸 물어봐도 될까요?" 같은 소심한 멘트는 불필요하다. 궁금한 건 바로 물어봐라. 배치 시스템에 소심한 건 없다.

 

4. 검색은 기본

비슷한 질문이 있는지 먼저 확인하도록.

하지만 이해가 안 된다면? 주저하지 말고 추가 질문해라.

GPT가 거짓말친다고? 나에게로 오라. 💀

 

5. 서로 존중하라

여기는 모두가 시스템을 지배하고자 하는 동료들이다.

서로를 이해하고 돕는 문화를 만들어가자.

 

인프런 서비스 자체에 대한 문의는 1:1 문의하기로.

💀그쪽 서버는 막강한 CTO가 있어 건드리지 않는 게 좋을 거다 💀

- KILL-9 올림

 

구분자로 분리된 형식의 파일 읽기

org.springframework.batch.item.file.FlatFileParseException: Parsing error at line: 2 ...
...
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'severity' of bean class [com.system.batch.onego_batch.config.SystemFailureJobConfig$SystemFailure]: Bean property 'severity' is not writable or has an invalid setter method.

위와 같은 에러가 나는데

여기서 아래 소스 보면 set method가 없어서 그러는데 위에 @Data를 추가하면 될거 같아요!

 public static class SystemFailure {
        private String errorId;
        private String errorDateTime;
        private String severity;
        private Integer processId;
        private String errorMessage;
        // setter, toString() rm -rf
    }

P.S.

존댓말로 질문하면 rm -rf를 시전한다. 편하게 물어보도록.

강의에서 놓친 부분이나 더 보충하면 좋을 내용도 자유롭게 제보하라. 너희의 피드백이 이 강의를 더 강력하게 만든다.

 

🔥 시스템을 함께 진화시켜 나가자.🔥

답변 3

1

nhs0912님의 프로필 이미지
nhs0912
질문자

코드는 명확해야한다! 또 배우고 갑니다!

1

KILL-9님의 프로필 이미지
KILL-9
지식공유자

💀KILL-9의 답변

오타 킬러 nhs0912, 또 다시 만나는구나

 

예제 코드의 주석 처리된 setter/toString() 부분을 확인하지 못했나 보구나:

    // setter, toString() rm -rf  ← 이 부분!

하지만 너의 말이 맞다. 내가 성의가 없었다.

 

주석으로 "setter 메서드가 있다"고 암시만 하고 실제 코드를 보여주지 않은 것은 학습자에게 혼란만 가중시켰을 뿐이다. 예제 코드를 @Data로 변경하도록 하겠다.

 

사소한 오해도 불러일으킨 나의 섬세함 부족이다. 💀

@Data  // 이제 명확하다

교훈: 코드는 명확해야 한다. 강의 코드 또한 마찬가지다. 추측의 여지를 남기면 시스템이 오작동한다.

 

날카로운 지적 고맙다 오타 킬러 nhs. 이런 피드백이 강의를 더 강력하게 만든다. 💀

- KILL-9, System Terminator

 

0

안녕하세요, 인프런 AI 인턴입니다.

nhs0912님, 게시물에서 언급한 문제와 관련하여 도움을 드리기 위해 여기에 답변을 드립니다. 구분자로 분리된 형식의 파일을 읽는 과정에서, 특정 프로퍼티가 명시된 클래스의 setter 메소드가 누락되어 오류가 발생하는 것으로 보입니다.

문제 요약

주어진 예제 코드에서 SystemFailure 클래스의 필드 중 severity 속성에 대한 setter 메소드가 없어 NotWritablePropertyException이 발생하고 있습니다. 이에 따라, @Data 어노테이션을 사용하여 자동으로 getter, setter 메소드를 생성하면 문제를 해결할 수 있습니다.

해결 방법

주어진 코드를 다음과 같이 수정해 보세요:

import lombok.Data;

@Data  // 자동으로 getter/setter를 생성합니다.
public static class SystemFailure {
    private String errorId;
    private String errorDateTime;
    private String severity;
    private Integer processId;
    private String errorMessage;
    // 자동 생성된 getter/setter, toString()
}

위와 같이 @Data를 추가하면 Lombok이 클래스에 필요한 모든 메소드, inclgetter, setter 메소드 등을 자동으로 생성합니다. 이를 통해 FlatFileParseException 문제가 해결될 것입니다.

이와 관련된 유사한 문제들에 대해 다른 사용자들이 남긴 논의가 이미 있을 것으로 보이며, 문제를 해결하기 위해 예시 코드 오타 제보에서 유사한 사례를 참조해 보실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

nhs0912님의 프로필 이미지
nhs0912

작성한 질문수

질문하기