강의

멘토링

로드맵

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

SBS님의 프로필 이미지
SBS

작성한 질문수

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

이너 클래스로 구현하는 이유

작성

·

16

1

킬구형 안녕!

지금 실무에서 Spring Batch를 사용해서 배치 기능 구현하고 있는데 궁금한 점이 있어.

강의의 예제 코드들을 보다보면 Job에 필요한 항목들을 따로 클래스 파일로 빼서 구현하지 않고 JobConfig 클래스 내에서 이너 클래스로 구현하던데 특별한 이유가 있을까!?

@Slf4j
public static class BrainwashProcessor implements ItemProcessor<InFearLearnStudents, BrainwashedVictim> {


강의가 너무 재밌어서 점심시간에도 공부 중이야 ㅎㅎ

답변 2

1

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

🔥 긴급 알림: inner class 사용의 숨겨진 진실 🔥

강의 예제에서 종종 inner class를 사용하는 것을 본 적 있을 것이다 .

혹시 "아, 이거 그냥 편의상 넣은 건가?" 라고 생각했는가?

 

...

 

그렇다.

클래스 나눠서 설명하면 하나의 코드 블록으로 설명할 수 없어서 흐름이 끊기고, "다음으로 KILL9.java 파일 만들어라~" 이런 보일러플레이트 안내가 반복되어야 하기 때문이다.

 

그래서 그냥 한 클래스 안에 때려박았다. (설계 패턴의 우아한 적용? 웃기지마라.)

 

이미 자바를 알고 스프링을 아는 너희들이라면 알아서 분간할 것이라고 믿는다. 💀

 

 

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

역시 그런 깊은 뜻이 있었구나!

답변 고마워~

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

고맙다 sbs형💀

0

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

SBS님, 강의를 열심히 들어주시고 계시다니 감사드립니다! 😊 실무에서 Spring Batch를 사용하는 중의 궁금증에 대해 답변 드리겠습니다.

Spring Batch에서 이너 클래스로 ItemProcessor, ItemReader, ItemWriter 등을 구현하는 것이 특정한 이유가 있는지에 대한 질문을 하셨는데요, 이 방식에는 몇 가지 이점이 있습니다:

이너 클래스로 구현의 주요 이유

  1. 응집성 증가: 이너 클래스는 상위 클래스와 긴밀하게 연관된 기능을 구현할 때 사용합니다. JobConfig 클래스 내에서 직접 사용하는 Processor나 Reader, Writer 등을 이너 클래스로 구현하면 해당 Job과 관련된 배치 로직을 하나의 파일 내에서 관리할 수 있게 되어 응집성이 높아집니다.

  2. 파일 관리 용이: 관련된 배치 컴포넌트를 한 곳에 모아놓음으로써 프로젝트 내 파일 수를 줄이고 관리하기 쉽게 만듭니다. 패키지 구조가 복잡하지 않아도 된다면 실수로 구현해야 할 필요성이 높은 것을 빠트리지 않게 도와줍니다.

  3. 범위 제한: 이너 클래스를 사용함으로써 해당 배치 내에서만 사용되는 로직 및 변수들을 제한 범위 안에서 관리할 수 있게 됩니다. 특히, 해당 이너 클래스가 상위 클래스의 변수나 메소드를 참조할 수 있어 코드 구조를 간단하고 명료하게 유지할 수 있습니다.

그러나, 프로젝트 규모가 커지거나 재사용 가능한 컴포넌트로 사용해야 할 경우에는 이너 클래스보다는 별도의 클래스로 분리하여 사용하는 것이 좋습니다.

관련된 유사한 질문은 아래의 답변에서 더 참고하실 수 있습니다:
- 이너 클래스와 별도의 클래스 파일 사용 비교하기

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

SBS님의 프로필 이미지
SBS

작성한 질문수

질문하기