IoC의 개념
- IoC(Inversion of Control, 제어권의 역전)이란 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다.
- 자주 사용하는 객체들을 미리 메모리에 올려 놓고, 클라이언트에서 해당 객체를 요청해오면 객체를 빌려준 후 소멸 시키지 않고 재활용
- 스프링 컨테이너: IoC 개념을 구현하기 위해서 사용됨
- 컴포넌트 의존관계 결정(component dependency resolution), 설정(configuration) 및 생명주기(lifecyle)를 해결하기 위한 디자인 패턴(Design Pattern)
IoC 컨테이너
- 스프링 프레임워크도 객체에 대한 생성 및 생명주기를 관리할 수 있는 기능을 제공하고 있음. 즉, IoC 컨테이너 기능을 제공한다.
- IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다.
- POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.
- 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다.
- 요청이 많은 애플리케이션에서는 컨테이너를 사용하지 않으면 부하가 걸릴 수 있다.
IoC 컨테이너 종류
- 피코 컨테이너, Pico Container
- 구글 주스 컨테이너, Guice Container
IoC 분류
1) DL (Dependency Lookup): 의존성 검색
저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup하는 것
(클라이언트에서 객체 타입이나 아이디를 통해 컨테이너에서 필요한 객체를 찾는 것)
2) DI (Dependency Injection): 의존성 주입
각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
(빈 설정 파일 > XML)
※ DL 사용 시 컨테이너 종속성이 증가하여 주로 DI를 사용함 (Setter, Constructor, Method Injection)
Spring IoC 관련 용어
Managed Bean
- 스프링 컨테이너에 의해서 관리되는 객체
- 스프링 빈 이라고도 함
- 스프링 설정파일에 <bean> 태그로 등록되어 사용
- Annotation으로 자동 등록 기능(Component Scan) 사용 가능
Spring Container
- 관리되어지는(managed) 빈이 모여 있는 곳
- IoC 컨테이너로써 Application Context 클래스로 구현됨
- Context라는 용어가 들어 있으면 Bean이 모여서 관리되는 컨테이너를 의미
실습
1. TestDAO 작성
- 패키지 생성
- HelloDAO.java 클래스 생성
- HelloMain.java 클래스 생성
2. TestDAO 빈컨테이너에 등록
- 스프링 설정 파일 생성
3. TestDAO DL로 사용
- getBean이 Lookup을 지원
Summary
- 스프링은 스프링 컨테이너에 빈(자바 객체)을 로딩하여 관리한다.
- 빈을 자동으로 관리해주는 기능(IoC)은 스프링의 핵심 기능 중 하나이다.
'Study > Spring' 카테고리의 다른 글
[Spring] 우체국 우편번호 API 적용 (0) | 2023.06.14 |
---|---|
[Spring] 3. 메이븐 Spring Project 생성 (0) | 2023.02.16 |
[Spring] 2. 스프링과 메이븐 (0) | 2023.02.16 |
[Spring] 1. 스프링 프레임워크 개요 (0) | 2023.02.16 |