728x90

스프링 컨테이너 (Spring Container) 란?

스프링프레임워크의 핵심 컴포넌트로, 자바 객체(= Bean) 생명주기 관리 & 추가적 기능을 제공하는 역할을 한다.

XML 또는 애노테이션 기반 자바 설정 클래스로 만들 수 있다.

 

스프링 빈 (Bean) 이란?

스프링 컨테이너에 의해 관리되는 재사용 가능한 SW 컴포넌트이다.

즉, 스프링 컨테이너가 관리하는 자바 객체이다.

 


 

 

 

Application Context를 스프링 컨테이너라 하며, AnnotationConfigApplicationContext의 상위 인터페이스이다. 

상위 인터페이스라는 것은 즉, 기능을 적게 제공한다는 것이다. 

 

여기서 알게된 사실은 개발 시 가급적이면 기능을 적게 제공하는 상위 인터페이스를 사용하는 것을 권장한다는 것이다.

즉, 구현 클래스가 변경되어도 클라이언트 코드 변경이 없는 상위 인터페이스를 사용한다는 것이다.

(아래 그림을 보면 쉽게 이해 가능하다.)

그림 출처 : https://velog.io/@pruit/ApplicationContext%EC%99%80-AnnotationConfigApplicationContext

 


 

스프링 컨테이너 생성 과정

  1.  new AnnotationConfigApplicationContext() 사용하여 컨테이너를 생성한다. 
    이때, 파라미터로 AppConfig.calss로 줌으로서 구성정보를 제공한다.

    ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);​​​


  2.  파라미터로 넘어온 AppConfig.class 정보를 사용해서 스프링 빈을 등록한다.
    스프링 빈 저장소는 빈 이름 빈 객체로 구성되어 있다. 
    (빈 이름은 메서드 이름 부여 또는 직접 부여가 가능하나 항상 다른 이름을 부여해야 한다.)

  3.  설정 정보를 참고하여 등록된 스프링 빈의 의존관계를 주입(DI) 한다. 

 

 

 


스프링 빈 조회

스프링 빈을 조회할 때  ac.getBean()을 사용한다. 

아래 표는 기본적인 조회 방법이다.

ac.getBean(빈 이름, 타입) 빈 이름과 타입 조회
ac.getBean(타입) 빈 타입 조회
ac.getBeanDefinitionNames() 스프링에 등록된 모든 빈 이름 조회

 

 

스프링 빈 조회 - 상속관계

스프링 빈 조회 시 부모 타입으로 조회하면, 자식 타입도 함께 조회한다. (= 대원칙)

그러므로 Object 타입(모든 자바 객체의 최고 부모)으로 조회 시 모든 스프링 빈 조회가 가능하다.

728x90

+ Recent posts