Spring Container

현시기얌·2022년 3월 2일
0

Spring 핵심원리

목록 보기
2/15

스프링 컨테이너 생성

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
  • ApplicationContex를 스프링 컨테이너라고 한다.
  • ApplicationContext는 인터페이스다.
  • 스프링 컨테이너는 XML을 기반으로 만들 수 있고 애노테이션 기반의 자바 설정 클래스도로 만들 수 있다.
  • AppConfig를 사용하는 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만드는 방법이다.

스프링 컨테이너 생성 과정

1. 스프링 컨테이너 생성

  • new AnnotationConfigApplicationContext(AppConfig.class)
  • 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다.
  • 여기서는 AppConfig.class를 구성정보로 지정했다.

2. 스프링 빈 등록

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

3. 스프링 빈 의존관계 설정 - 준비

4. 스프링 빈 의존관계 설정 - 완료

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

스프링 빈 조회하기

모든 빈 출력하기

  • ac.getBeanDefinitionNames() : 스프링에 등록된 모든 빈 이름이 조회된다.
  • ac.getBean() : 빈 이름으로 빈 객체(인스턴스)를 조회한다.

애플리케이션 빈 출력하기

  • 스프링이 내부에서 사용하는 빈은 getRole()로 구분할 수 있다.
    • ROLE_APPLICATION : 일반적으로 사용자가 정의한 빈
    • ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈

스프링 빈 조회 - 기본

  • ac.getBean(빈이름, 타입)
  • ac.getBean(타입)
  • 조회 대상이 스프링 빈에 없으면 예외 발생
    • NoSuchBeanDefinitionException

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

  • 타입으로 조회 시 같은 타입의 스프링 빈이 둘 이상이면 오류가 발생한다. 이 때는 빈 이름을 지정하자.
  • ac.getBeansOfType()을 사용하면 해당 타입의 모든 빈을 조회할 수 있다.

스프링 빈 조회 - 상속 관계

  • 부모 타입으로 조회하면 자식 타입도 함께 조회한다.
  • 그래서 모든 자바 객체의 최고 부모인 Object 타입으로 조회하면 모든 스프링 빈을 조회한다.
profile
현시깁니다

0개의 댓글