본문 바로가기
개발/Spring

IoC 컨테이너

by BellOne4222 2024. 2. 4.

IoC 컨테이너

  • 객체를 생성하고 관리하고 책임지고 의존성을 관리해주는 컨테이너
  • 인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다.
    • 객체관리 주체가 개발자가 아닌 프레임워크이기 때문에 개발자는 로직에 집중 할 수 있다.
  • POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.
    • POJO : 주로 특정 자바 모델이나 기능, 프레임워크를 따르지 않는 Java Object를 지칭한다.Java Bean 객체가 대표적이다.간단하게 getter / setter를 생각하면 될 것 같다.

 

스프링 컨테이너 (= IoC 컨테이너)의 종류

  • 스프링 컨테이너가 관리하는 객체를 빈(Bean)이라고 하고,  이 빈들을 관리한다는 의미로 컨테이너를 빈 팩토리(BeanFactory) 라고 부릅니다.
  • 객체의 생성과 객체 사이의 런타임 관계를 DI 관점에서 볼 때 컨테이너를 BeanFactory라고 한다.
  • BeanFactory에 여러가지 컨테이너 기능을 추가한 어플리케이션컨텍스트(ApplicationContext) 가 있다.

 

BeanFactory와 ApplicationContext

1.  BeanFactory


- BeanFactory 계열의 인터페이스만 구현한 클래스는 단순히 컨테이너에서 객체를 생성하고 DI를 처리하는 기능만 제공한다.
 
- Bean을 등록, 생성, 조회, 반환 관리를 한다.
 
- 팩토리 디자인 패턴을 구현한 것으로 BeanFactory는 빈을 생성하고 분배하는 책임을 지는 클래스이다.
 
- Bean을 조회할 수 있는 getBean() 메소드가 정의되어 있다.
 
- 보통은 BeanFactory를 바로 사용하지 않고, 이를 확장한 ApplicationContext를 사용한다.
 
2.  ApplicationContext


- Bean을 등록, 생성, 조회, 반환 관리하는 기능은 BeanFactory와 같다.
 
- 스프링의 각종 부가 기능을 추가로 제공한다.

 

- 국제화가 지원되는 텍스트 메시지를 관리 해준다.


- 이미지같은 파일 자원을 로드할 수 있는 포괄적인 방법을 제공해준다.


- 리스너로 등록된 빈에게 이벤트 발생을 알려준다.

 

따라서 대부분의 어플리케이션에서는 빈팩토리 보다는 어플리케이션콘텍스트를 사용하는 것이 더 좋다.

 

 

 

 

'개발 > Spring' 카테고리의 다른 글

AOP(Aspect Oriented Programming)  (0) 2024.02.06
스프링 빈 이벤트 라이프 사이클  (0) 2024.02.04
IoC(Inversion Of Controll)  (0) 2024.02.04
DI(Dependency Injection)  (0) 2024.02.04
Bean  (0) 2024.02.03