Spring의 핵심 객체 컨테이너

최범균님의 스프링 프로그래밍 입문 이라는 책을 통해 공부한 부분을 블로그에 정리하고자 합니다. 잘못되거나 부족한 부분이 있으면 언제든 댓글로 가르침 부탁드립니다.

목차

  1. 스프링 컨테이너 개념
  2. 컨테이너 종류
  3. 싱글턴 객체



1. 스프링 컨테이너 개념

IoC 컨테이너라고도 부른다. 컨테이너의 기능은 객체의 생성 및 소멸 등 객체의 생명주기를 관리한다. 프레임워크의 핵심 개념인 컨테이너 개념은 객체의 생명주기 관리를 개발자가 아닌 프레임워크가 함을 의미하고 이는 곧 개발 주도권이 개발자가 아닌 프레임워크에 있기 때문에 IoC(Inversion Of Control : 제어의 역전) 라고 부른다.



2. 컨테이너 설정

컨테이너 설정(Application Context)은 자바나 xml 등 다양한 타입으로 설정 할 수 있다. Application Context는 클래스 계층도 최상위의 beanFactory 인터페이스에서 bean 객체의 생성, 소멸 등 생명주기 관리 기능을 정의하고 있고 그 하위 클래스 중 ApplicationContext 인터페이스에서 bean 생명주기 기능을 포함한 메시지, 환경 변수 등을 처리하는 기능을 정의한다. 이 두 인터페이스의 차이점은 여러개가 있지만 가장 큰 차이점은 객체 생성 방식이다. beanFactory는 lazy loading으로, 객체 호출 시점에 그 객체를 생성한다. ApplicationContext는 pre loading으로, 컨테이서 생성 시점에 그 안에 설정된 모든 객체를 생성한다.



3. 싱글턴 객체

클래스의 객체를 하나만 생성하는 디자인 패턴을 싱글턴 패턴이라고 하는데, 컨테이너는 싱글턴 패턴을 따른다. (물론 변경 가능하다.) 즉, 단일 bean 객체를 생성하여 객체 호출시마다 같은 객체를 주입한다.

Published 26 Mar 2019


jaegoon on github