컨테이너, IoC(Inversion of Control)

조한빈·2020년 11월 8일
0

SPRING

목록 보기
1/1

컨테이너란?

인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것

스프링 컨테이너

스프링 프레임워크의 핵심부에 위치하며, 종속객체 주입을 이용하여 애플리케이션을 구성하는 컴포넌트들을 관리한다

요놈은 !! 개발자가 작성한 코드의 처리과정을 자기가!! 알아서!! 개발자가 작성한 코드를 스스로 참조 하며, 객체의 생성 소멸을 컨트롤 해준다.

정말이지 고마운 녀석인데 너무 익숙해져버렸다..

정리하자면, 개발자가 작성한 코드는 컨테이너를 사용하는 순간 개발자의 손을 떠나 컨테이너의 독립적인 영역으로 종속된다.

그리고 독립적인 컨테이너는 자기 마음대로 객체를 생성하는게 아니라 프로그램을 이요하는 이용자이 호출에 의해 컨테이너가 걸맞게 동작되는 구조이다..

스프링 컨테이너의 두 종류

1. 빈팩토리 BeanFactory (org.springframework.beans.factory.BeanFactory)

  • DI(Dependency Injection)의 기본 바탕이 되는 가장 단순한 컨테이너 (팩토리 디자인 패턴을 구현한 것)
  • Bean Factory는 Bean을 생성하고 분배하는 역할을 하는 클래스이다
  • Bean의 정의를 즉시 로딩
  • 그러나 Bean이 필요하게 됐을 때 인스턴스화 한다
    • 정의 후 곧바로 인스턴스화 하지않고 필요해졌을 때 인스턴스화
    • = Lazy loading

2. 어플리케이션 컨텍스트 ApplicationContext (org.springframework.context.factory.BeanFactory)

  • 빈 팩토리와 유사한 기능을 제공하나, 좀 더 많은 기능을 제공

더 추가적으로 제공하는 기능

  • 국제화가 지원되는 텍스트 메시기 관리
  • 이미지같은 파일 자원을 로드할 수 있는 포괄적인 방법 제공
  • 리너스로 등록된 빈에게 이벤트 발생을 알려줌

많이 사용되는 ApplicationContext

  • ClassPathXmlApplicationContext : 클래스패스에 위치한 xml 파일에서 컨텐스트 정의 내용을 읽어들인다.
  • FileSystemxmlApplicationContext : 파일 경로로 지정된 xml 파일에서 컨텐스트 정의 내용을 읽어들인다.
  • XmlWebApplicationContext : 웹 어플리케이션에 포함된 xml 파일에서 컨텐스트 정의 내용을 읽어들인다.

BeanFactory의 Lazy loading과 의 차이

ApplicationContext는 초기화 시점에 모든 싱글턴 빈을 미리 로드한 후 애플리케이션 가동 후 빈을 지연없이 얻을 수 있음.

  • 미리 빈을 생성해 놓아서 빈이 필요할 때 즉시 사용 보장

0개의 댓글