spring
컨테이너
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Programming
Table of Contents
Spring 컨테이너란? #
주입을 이용하여 객체를 관리하는 컨테이너이다. 컨테이너의 사전적 의미는 무언가를 담는 용기, 즉 그릇을 의미한다. 이를 통해 접급하자면 컨테이너는 객체관리를 주로 수행하는 그릇정도로 이해할 수 있다. 빈의 생성과 관계, 사용, 생명 주기등을 관장한다. 컨테이너를 통해 시스템 전반에서 언제는 사용가능하다.
그림1 스프링 컨테이너
출처: https://zetawiki.com/wiki/%EC%8A%A4%ED%94%84%EB%A7%81_IoC_%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88
사용이유 #
그림2 객체를 이용하는 방법
사실, 프로그래밍에서 그릇, 또는 용기로 이해될 수 있는 비슷한 요소들이 많이 있다. 그렇다면 왜 Spring에서는 굳이 스프링 컨테이너 기능을 제공하는 것일까? 우리는 객체를 사용하기 위해서 new 생성자를 이용하거나 getter/setter 기능을 써야만 했다. 한 어플리케이션에는 이러한 객체가 무수히 많이 존재하고 서로 참조하고 있을 것이다. 그 정도가 심할 수록 의존성이 높다고 표현한다. 낮은 결합도와 높은 캡슐화로 대변되는 객체지향프로그래밍에서 높은 의존성은 아니꼬울 수 밖에 없다. 의존성 제어, 즉 객체 간의 의존성을 낮추기 위해 바로 Spring 컨테이너가 사용된다.
그림3 스프링 컨테이너를 이용한 객체 사용 방법
주요용어 #
-
POJO
- 어플리케이션의 핵심 코드를 담고 있는 클래스
- Plain Old Java Object, 직역하면 오래된 방식의 자바 객체라는 뜻으로 특정 환경에 종속없는 단순 클래스이다. 종속되지 않는 다는 것은 코드를 간결히 할 수 있고, 객체지향 설계를 충실히 이행하고 있음을 보여준다.
-
Bean
- 스프링 컨테이너가 생성하고 관리하는 어플리케이션 객체
스프링 컨테이너의 종류 #
BeanFactory #
영어 그대로 빈 공장이다. 빈 객체를 생성하고 관리하는 클래스이다. 디자인패턴의 일종인 팩토리 패턴을 구현한 것이다. BeanFactory fac = new XmlBeanFactory(new FileInputStream("bean.xml")); MyBean myBean = (Mybean) factory.getBean("myBean"); getBean()을 호출함으로서 팩토리는 의존성 주입을 통해 빈 객체를 생성하고 관리한다.
ApplicationContext #
빈팩토리와 유사하지만 향상된 형태의 컨테이너이다. 빈 팩토리와의 차이점은 ApplicationContext 컨테이너는 다음과 같은 추가 기능을 제공한다.
- 국제화 지원 텍스트 메시지 관리
- 이미지 파일 로드
- 리스너로 등록된 빈에게 이벤트 발생 통보
그림4 BeanFactory ApplicationContext Difference
출처: http://theplacard.in/spring-interview-questions-and-answers/
생명주기 #
컨테이너의 생명주기 #
생성, 설정, 사용, 종료로 주기를 네 부분으로 나눌 수 있다.
그림5 컨테이너의 생명주기
빈의 생명주기 #
implements InitializingBean : 빈 초기화 과정에서 호출 -> @PostConstruct
implements DisposableBean : 빈 소멸 과정에서 호출 -> @PreDestory
그림6 빈의 생명주기
관련 키워드 #
스프링, SPRING, 컨테이너, Container, framework, bean, controller, bean, 빈, ioc, spring ioc, bean scope, ioc 컨테이너, spring framework container