스프링 컨테이너 - 1

스프링 컨테이너 생성

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
  • ApplicationContext를 스프링 컨테이너라 하며, 인터페이스다.

  • 스프링 컨테이너는 XML 기반과 애노테이션 기반의 자바 설정 클래스를 지원한다.

스프링 컨테이너 생성 과정

img.png
  • 스프링 컨테이너를 생성할 때는 설정 정보를 지정해주어야 한다.(AppConfig)

img_1.png
  • 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다.

  • 빈 이름은 메서드 이름을 사용하며 빈 이름을 직접 부여할 수 있다.

  • 빈 이름은 항상 다른 이름을 부여해야 한다. 같은 이름을 부여하면 다른 빈이 무시되거나 기존 빈을 덮어버릴 수 있다.

img_2.png
img_3.png
  • 스프링 컨테이너는 설정 정보를 참고해서 의존관계를 주입(DI)한다.

  • 단순히 자바 코드를 호출하는 것이 아니라 싱글톤 컨테이너를 사용한다.

컨테이너에 등록된 빈 조회

  • ac.getBeanDefinitionNames() : 스프링에 등록된 모든 빈 이름 조회

  • ac.getBean() : 빈 이름으로 빈 객체(인스턴스)를 조회한다.

  • ac.getRole() : 스프링이 내부에서 사용하는 빈과 직접 등록한 빈을 구분할 수 있다.

빈 조회 - 기본

  • ac.getBean(빈 이름, 타입)

  • ac.getBean(타입)

  • 조회 대상 스프링 빈이 없으면 NoSuchBeanDefinitionException 예외가 발생한다.

빈 조회 - 동일한 타입이 둘 이상

빈 조회 - 상속 관계

  • 부모 타입으로 조회하면 자식 타입도 함께 조회된다.

  • 그래서 Object는 모든 자바 객체의 최고 부모이므로 Object로 조회하면 모든 스프링 빈을 조회한다.

Last updated