반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

개키우는개발자 : )

Bean의 생명주기 메소드 본문

반응형

요약 및 결론

스프링 컨테이너의 빈 등록 방식을 활용하여, Factory 메소드에서 DispatcherServlet과 같은 객체를 빈으로 관리하는 방법과 ApplicationContextAware 인터페이스를 사용하여 스프링 컨테이너가 빈에 필요한 정보를 어떻게 주입하는지 살펴봤습니다.

핵심 내용

  1. 스프링 빈 등록 방식:

    • Factory 메소드를 활용한 빈 등록:
      • 기존의 TomcatServletWebServerFactoryDispatcherServlet 같은 객체를 스프링 빈으로 등록하는 방법을 학습.
      • 이러한 빈들을 스프링 컨테이너가 관리하게 함으로써 유연한 확장성을 확보할 수 있습니다.
      • Factory 메소드에서 반환 타입으로 추상화된 타입을 사용하는 것이 좋은데, 이는 나중에 Tomcat이 아닌 다른 서블릿 컨테이너로 교체될 가능성을 대비하기 위함입니다.
  2. ApplicationContextAware 인터페이스:

    • ApplicationContextAware는 스프링 컨테이너가 빈을 관리하는 과정에서 컨테이너 자신을 빈에 주입할 수 있게 도와줍니다.
    • ApplicationContextAware 인터페이스를 구현한 클래스는 스프링 컨테이너가 자동으로 ApplicationContext를 주입해 줍니다.
    • 이를 통해 개발자가 명시적으로 컨텍스트를 생성자나 메소드에서 전달하지 않아도 자동으로 의존성 주입이 가능합니다.
  3. 라이프사이클 메소드:

    • 스프링은 빈을 컨테이너에 등록하고 나서 라이프사이클 메소드를 호출하여, 필요한 의존성(예: ApplicationContext)을 자동으로 빈에 주입합니다.
    • 이 과정에서 빈은 자동으로 스프링 컨테이너가 관리하는 다른 빈들과의 의존성을 설정할 수 있습니다.
  4. DispatcherServlet의 스프링 컨테이너 주입:

    • DispatcherServlet이 ApplicationContextAware 인터페이스를 구현하고 있기 때문에, 스프링 컨테이너는 자동으로 DispatcherServlet에 애플리케이션 컨텍스트를 주입해줍니다.
    • 이를 통해 개발자는 명시적으로 컨텍스트를 주입하지 않더라도 서블릿이 스프링 컨텍스트와 함께 작동하도록 할 수 있습니다.
  5. 생성자를 통한 의존성 주입:

    • ApplicationContextAware 대신 생성자를 통한 의존성 주입을 사용하는 것이 더 권장됩니다.
    • 생성자를 통해 주입받는 방식은 타입 안정성을 보장하며, 필드를 final로 선언할 수 있어 더 안전한 설계가 가능합니다.

결론:

스프링 컨테이너의 빈 관리와 의존성 주입을 이해함으로써, 더 나은 설계를 할 수 있고 확장성 있는 애플리케이션을 구축할 수 있습니다. ApplicationContextAware와 같은 구 방식보다는 생성자를 통한 주입 방식이 더 현대적이고 안전한 방법으로 권장되며, 이를 통해 스프링의 자동 의존성 주입 기능을 효과적으로 활용할 수 있습니다.

반응형
Comments