인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

빈의 생성 순서가 궁금합니다.

해결된 질문

작성

·

1.1K

0

  • 강의 내용을 가지고 순서를 추측을 하면

  1. 빈의 메타 정보 생성

  2. BeanFactoryPostProcessor() 클래스의 PropertySourcesPlaceholderConfigurer 실행

  3. 빈을 생성하되 아래와 같은 순서로 생성하면서 의존 관계 주입

    @Import 에 의한 @Component 가 붙은 빈 → DerferredImportSelector 의 selectImports 에 의한 @Bean 에 붙은 클래스를 빈으로 등록 → @Configuration 에 의해 @Bean 이 붙은 것 → @Component scan 이 @Component 가 붙은 빈

  4. applicationRunner

  5. 빈을 메모리에 로딩

이게 맞는지 확인 부탁 드립니다. 아울러 빈을 생성하는 과정에서 수 많은 콜백 함수들이 기동되는 같은데 이에 대한 구성도 등을 얻을 수 있을지요? 인터넷 상의 정보는 너무 혼란스러운 것들 이 많아서요

답변 1

1

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴이에요. 빈의 생성 순서에 관한 질문이시군요.

빈의 생성 순서는 스프링 컨테이너의 초기화 과정에서 일어나는데, 그 과정은 다소 복잡하게 이루어집니다. 제가 이해한 내용에 기반하여 답변을 드리겠습니다.

일반적으로 빈의 생성 순서는 다음과 같습니다:

  1. BeanFactoryPostProcessor: 빈 메타 정보를 수정하거나 추가할 수 있는 후처리기입니다.
  2. PropertySourcesPlaceholderConfigurer: 프로퍼티 파일을 활용하는 빈을 등록할 때 사용됩니다.
  3. @Import: 설정 클래스 내의 @Component 애너테이션이 붙은 빈들을 생성합니다.
  4. DeferredImportSelector: @Import 어노테이션의 selectImports 메서드를 통해 등록된 빈을 생성합니다.
  5. @Configuration: 설정 클래스 내의 @Bean 애너테이션이 붙은 빈들을 생성합니다.
  6. @ComponentScan: 클래스 패스를 스캔하여 @Component 애너테이션이 붙은 빈을 생성합니다.
  7. ApplicationRunner: 애플리케이션 실행 후 실행되는 콜백 함수입니다.

빈 생성 과정 중에는 많은 콜백 함수들이 실행될 수 있습니다. 하지만 스프링 프레임워크에서는 이를 추적하고 제공하는 공식적인 구성도나 문서는 제공되지 않습니다. 각 콜백 함수의 동작은 스프링의 내부 동작 및 라이브러리에 따라 다르기 때문에, 구체적인 동작 과정을 확인하려면 해당 기능을 제공하는 클래스 및 메서드의 소스 코드나, 공식적인 문서를 참고하는 것이 최선입니다.

더 자세한 내용을 알고 싶으시다면 스프링 프레임워크의 공식 문서나 관련 도서, 블로그, 온라인 커뮤니티 등을 참고하시면 도움이 될 것입니다.

질문에 대한 답변이 도움이 되었기를 바랍니다. 추가로 궁금한 점이 있다면 언제든지 물어보세요. 감사합니다!