강의

멘토링

로드맵

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

sjpae1216님의 프로필 이미지
sjpae1216

작성한 질문수

스프링 핵심 원리 - 기본편

인터페이스 InitializingBean, DisposableBean

의존관계 트리거

작성

·

21

0

객체 생성 후 의존관계 주입이 일어나잖아요?

코드에서는 setUrl함수를 이용해서 의존관계 주입을 해주는데 afterPropertiesSet 함수는 어떤 걸 보고 의존관계 주입이 완료되었구나라고 인식 후 메소드가 실행되는건가요?

 

그냥 클래스의 필드들(수업자료에서는 String url)의 값이 할당되면 실행되는건가요?

그렇다기엔 setUrl을 주석처리하니 그래도 afterPropertiesSet 함수가 실행되는데

답변 1

0

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

스프링에서의 의존관계 주입과 관련하여 궁금하신 점에 대해 설명드리겠습니다.

스프링에서는 빈의 초기화 콜백 메소드인 afterPropertiesSet()이 호출되는 시점은 스프링 컨테이너가 빈을 생성하고 의존관계 주입을 완료한 후입니다. 이 의존관계 주입은 setUrl()와 같은 메소드를 통해 이루어질 수 있습니다. 그러나 afterPropertiesSet()은 의존관계 주입이 완료되었음을 스프링 컨테이너가 인식한 이후에 자동으로 호출되는 것입니다.

스프링은 여러 가지 방식으로 의존관계를 주입할 수 있으며, 각각의 방식에 따라 주입이 완료되는 시점이 다소 다를 수 있습니다. 일반적으로, 생성자 주입을 사용하는 경우 생성자 실행이 완료되면 주입이 완료되며, 세터 주입을 사용하는 경우 모든 세터 메소드가 호출된 이후에 주입이 완료됩니다.

따라서, setUrl을 주석 처리하더라도, 스프링은 다른 방식(예: 필드나 생성자 주입)을 통해 이미 의존관계 주입을 완료할 수 있기 때문에 afterPropertiesSet()은 여전히 호출됩니다. afterPropertiesSet()이 호출되는 것은 스프링이 의존관계 주입을 완료하고 난 후의 라이프사이클 단계를 의미합니다.

이 주제와 관련하여 아래의 질문과 답변이 도움이 될 수 있습니다:

  1. 의존관계 주입과 setUrl() 연결
  2. 의존관계 주입이 종료되는 시점

이 링크들을 통해 더 구체적인 예시와 설명을 확인하실 수 있습니다.

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

sjpae1216님의 프로필 이미지
sjpae1216

작성한 질문수

질문하기