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

zzzzz님의 프로필 이미지
zzzzz

작성한 질문수

스프링 핵심 원리 - 기본편

섹션 8 생명주기 강의 질문입니다.

작성

·

137

·

수정됨

0

1.빈 생명주기 콜백 시작 9분에서 아래와 같은 3개 단어가 나오는데요.

ConfigurableApplicationContext가 최상위 인터페이스고

ApplicationContext

AnnotationConfigApplicationContext

이런 순으로 자식관계가 형성되어있는건가요?

 

  1. 빈 생명주기 콜백 시작 13분에서 스프링빈은 객체 생성후 의존관계주입이 되는데 생성자는 예외라고 하셨는데요. 생성자가 스프링빈을 이미 생성해서 스프링 빈이 같이 들어와야 되기 때문에 파라미터의 예외라고 하셨는데요. 혹시 코드로 예시좀 보여주실 수 있나요?

     

3.

인터페이스 InitializingBean, DisposableBean 3분에서 위와 같은 코드가 나오는데요. 위코드가 의존관계 주입이라는건가요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. ekek님 질문에 답변 드리겠습니다.

  1. 네, 말씀하신 인터페이스는 스프링에서 제공하는 컨테이너 관련 인터페이스입니다. ConfigurableApplicationContextApplicationContext의 자식 인터페이스이며, AnnotationConfigApplicationContextApplicationContext를 구현한 클래스로, 정확히 말씀하신 순서대로 상속 및 구현 관계가 형성되어 있습니다.

  2. 스프링 컨테이너에서 빈을 생성할 때, 생성자를 통한 의존관계 주입이 예외적인 경우를 말씀하신 것 같습니다. 생성자 주입의 경우, 스프링 빈 객체를 생성함과 동시에 의존 관계를 주입하기 때문에, 생성자 주입은 스프링 빈의 생명주기 과정 중 객체 생성 단계에 해당합니다. 다음은 생성자 주입 예시 코드입니다:

   @Component
   public class MyService {
       private final DependencyBean dependencyBean;

       @Autowired
       public MyService(DependencyBean dependencyBean) {
           this.dependencyBean = dependencyBean;
       }
   }

위 코드에서 MyService 빈이 생성될 때, 스프링은 DependencyBean 타입의 빈을 찾아 생성자로 전달하며 MyService 빈을 생성합니다. 이렇게 생성자 파라미터를 통해 의존성을 주입받고 있습니다.

  1. 첨부하신 이미지에 나온 코드는 InitializingBean 인터페이스의 afterPropertiesSet 메서드를 구현한 것으로, 의존관계 주입이 완료된 후 (즉, 스프링 빈의 속성 설정이 끝난 후) 실행되는 초기화 코드입니다. 직접적으로 의존관계를 주입하는 코드는 아니며, 의존관계가 주입되고 나서 필요한 초기화 작업을 진행하는 콜백 메서드입니다.

코드에서 connectcall 메서드는 afterPropertiesSet이 호출되었을 때 네트워크 연결을 설정하고 초기화 메시지를 보내는 로직을 처리하는 것으로 보입니다. 이런 초기화 메서드는 주입 받은 의존성을 사용하여 추가적인 설정을 하거나, 네트워크 연결처럼 무거운 초기화 작업을 수행할 때 사용됩니다.

zzzzz님의 프로필 이미지
zzzzz

작성한 질문수

질문하기