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

김태언님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

애노테이션 @PostConstruct, @PreDestroy

@PostConstruct 사용시 @ComponentScan 으로 구현

작성

·

33

0


1. 강의 내용과 관련된 질문인가요?예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]

강의에서 @Configuration 과 @Bean을 사용하여 초기화, 소멸 라이프사이클을 보았는데 강의에선 구현하진 않았지만 @ComponentScan으로 사용해보고 싶어서 NetworkClient에 @Component를 달고 LifeCycleConfig를 @ComponentScan 을 달아 사용해볼려고하였습니다. 근데 AnnotationConfigApplicationContext 사용하여 빈등록할시 저희가 의도했던 @PostConstruct 시점이 setUrl하기전에 불러와지는거같아 Null 값이 나오는데 ComponentScan사용시 setUrl 위치나 타이밍을 알고싶습니다

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 김태언님.

빈 생명주기와 관련된 질문을 주셨네요. 정확히는 @ComponentScan을 통한 빈 생성 시 초기화 단계에서의 @PostConstructsetUrl 호출 시점에 대한 질문입니다. 비슷한 질문이 몇 가지 있어서 참고하시면 도움이 될 것 같습니다.

  1. 빈 생명주기 의존관계주입과 초기화 시점 질문
    해당 게시물에서는 의존관계 주입과 초기화 시점에 대해 상세하게 설명하고 있습니다. 요약하자면, 스프링 빈이 생성되고 나서 의존관계가 주입된 후에 @PostConstruct 메서드가 실행됩니다. 따라서 setUrl 메서드는 @PostConstruct 전에 호출되어야 합니다.

  2. 컴포넌트스캔 이용하여 빈생성시 기본설정을 언제 해야하는지 궁금합니다.
    컴포넌트 스캔을 이용한 빈 생성 시 기본 설정 방법에 대해 설명하고 있습니다. 요약하면, 필요한 설정 작업은 @PostConstruct를 활용하거나 생성자를 통해 설정할 수 있습니다.

  3. 스프링 빈의 라이프사이클 내에서
    스프링 컨테이너 생성, 빈 생성, 의존관계 주입, 초기화 콜백 등의 과정이 상세히 설명되어 있습니다. 초기화 콜백은 @PostConstruct 등을 의미하고, 이는 의존관계 주입 후 호출됩니다.

따라서 @ComponentScan을 사용할 때도 @PostConstruct를 이용하여 초기화 작업을 수행하면 되며, setUrl 메서드를 빈 설정 단계에서 호출하는지 확인해 보세요.

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