강의

멘토링

커뮤니티

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

현승우님의 프로필 이미지
현승우

작성한 질문수

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

1장. 작전3: Spring Batch Listener와 활용 (리스너... 실행과 죽음의 모든 순간을 지켜보는 자 ☠️)

1장 작전 3 Listener 어노테이션 사용 사례 @Component 질문

작성

·

18

1

어노테이션을 사용한 Listener 를 정의할 때 @Component 어노테이션으로 빈으로 등록시켜줬는데, 실제로 Listener 클래스를 지정할때는 new ServerRackControlListener() 로 직접 생성해주고있네?

빈으로 등록한것과, 직접 생성한 것이 서로 연관되지 않는것 같은데 빈으로 주입받아서 넣어주는게 좋을까 아님 Listener 클래스를 빈으로 등록하지 않고 직접 생성해서 사용하는게 좋을까?

배운대로
Listener 클래스에서 JobExecution 이나 StepExecution 을 사용하는데, Job 실행이나 Step 마다 Execution 이 다를 수 있으니까 빈으로 등록하지 않아도 될 것 같은데 어떻게 생각해?

 

답변 2

1

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

예리한 판단이다.

해각 강의내용은 11월말 개선될예정이지만
그대의 말대로 팔요에따라 정하먄 된다

👍👍

0

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

현승우님, Spring Batch에서 Listener를 구현할 때 @Component 어노테이션을 사용하여 빈으로 등록하거나, 직접 객체를 생성하여 사용하는 방법에 대해 궁금하셨군요. 두 가지 방식 모두 사용할 수 있지만, 각각의 방식에 따른 차이점과 장단점을 고려하여 선택하는 것이 중요합니다.

@Component로 등록하는 경우

  • 장점: 스프링 컨텍스트에서 관리되기 때문에 다른 빈들과의 의존성 주입이 용이합니다.
  • 활용: DI(Dependency Injection)가 필요한 경우, 스프링 컨텍스트가 관리하는 다른 빈들과 연관 지을 수 있습니다. 또한 AOP나 트랜잭션과 같은 스프링의 기능을 활용할 수 있습니다.

직접 생성하는 경우

  • 장점: 독립적인 객체로 관리되며, 새로운 인스턴스를 원할 때마다 간단히 생성할 수 있습니다.
  • 활용: 각 실행마다 새로운 상태가 필수적이라면 직접 객체를 생성하여 사용하는 것이 보다 합리적일 수 있습니다.

실행별 사용에 따른 Listener 관리

  • JobExecution이나 StepExecution은 각각의 실행 맥락마다 생성되기 때문에, 특정 실행에 종속된 상태나 데이터를 관리하고자 한다면 직접 생성할 수 있습니다. 다만, Listener가 다른 빈을 필요로 하거나 상태 유지를 위해 특정 설정을 필요로 하는 경우 스프링 빈으로 등록하여 사용하는 것이 좋습니다.

비슷한 맥락의 질문들을 다룬 기존 답변에서 자세한 설명을 확인해 보시기 바랍니다:

이 링크들을 참고하여 Listener를 어떤 방식으로 구현할지에 대한 결정을 내리시는 데 도움이 되었으면 합니다.

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

현승우님의 프로필 이미지
현승우

작성한 질문수

질문하기