스프링 컨테이너와 스프링 빈

인프런 스프링 핵심 원리 - 기본편 수강 중

스프링 컨테이너

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
  • ApplicationContext가 스프링 컨테이너이자 인터페이스
  • xml 기반의 스프링 컨테이너로 만들 수도 있지만 요즘은 잘 사용하지 않음
  • 스프링 컨테이너는 BeanFactoryApplicationContext로 구분해서 말하는데 BeanFactory를 직접 사용하는 경우는 거의 없기 떄문에 일반적으로 ApplicationContext를 스프링 컨테이너라 한다.

스프링 컨테이너 생성 과정

그림1

스프링 컨테이너 생성

  1. new AnnotationConfigApplicationContext(AppConfig.class): AppConfig.class의 정보 전달
    • 스프링 컨테이너 생성
    • 스프링 컨테이너 안 스프링 빈 저장소 생성
      • key: 빈 이름
      • value: 빈 객체
  2. 스구성 정보 활용
    • AppConfig 같은 구성 정보가 전달 되어야 함
    • 구성 정보를 보고 객체 등 생성

스프링 빈 등록

그림2

  1. AppConfig 설정 정보를 확인해서 애너테이션@Bean이 붙어 있는 메서드 호출
  2. 해당하는 메서드를 호출해서 빈 객체로 등록
    • 빈 이름(Key): 메서드 이름
    • 빈 객체(Value): 메서드가 호출되고 리턴된 객체
    • 빈 이름을 직접 부여할 수도 있음
      ex) @Bean(name="memberService2")
    • 빈 이름을 같은 이름으로 부여하면 다른 빈이 무시되거나 기존 빈을 덮어버리기 때문에 빈 이름은 항상 다른 이름을 부여해야한다

스프링 빈 의존 관계 설정

그림3 스프링 빈 생성

그림4 스프링 빈에 의존 관계 대입 (DI)

[참조] 인프런 스프링 핵심 원리 - 기본편 - 링크

끝!