반응형
1. IoC(Inversion of Control)
제어의 역전
- 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다.
- 개발자가 직접 객체를 생성하는 것이 아니라, 스프링 프레임워크(IoC 컨테이너)가 대신 해준다.
IoC 컨테이너(= Spring 컨테이너, DI 컨테이너)
- 스프링 프레임워크는 객체에 대한 생성 및 생명주기를 관리할 수 있는 기능을 제공하고 있다. 즉, IoC 컨테이너 기능을 제공한다.
1. 객체의 생성, 의존성 관리
2. POJO의 생성, 초기화, 서비스, 소멸에 대한 권한 존재
(POJO : plain old java object로, 특정 플랫폼이나 규약에 종속되지 않는 객체를 의미한다. Java Bean을 의미)
3. 개발자가 직접 POJO를 생성할 수 있으나, 컨테이너에게 맡김
2. DI(Dependency Injection)
의존성 주입
- 각 클래스간의 의존관계를 빈 설정 정보(XML, Annotation)를 통해 컨테이너가 자동으로 연결해주는 것
- 개발자들은 단지 빈 설정파일에서 의존관계가 필요하다는 정보만 추가하면 된다.
- 컨테이너가 흐름의 주체가 되어 의존관계를 주입 해주는 것이다.
장점
1. 코드가 단순해진다.
2. 컴포넌트(객체) 간의 결합도가 낮아진다.
3. 유지보수가 용이
DI의 유형
1. Setter Injection : Setter 메서드를 이용한 의존성 주입
2. Construction Injection : 생성자를 이용한 의존성 주입
3. Method Injection : 일반 메서드를 이용한 의존성 주입
3. Spring DI 컨테이너
- DI 컨테이너가 관리하는 객체를 빈(Bean)이라고 명시
- 빈(Bean)들을 관리한다는 의미로, 컨테이너를 빈 팩토리(Bean Factory)라고 부름
Bean Factory
- Bean을 등록, 생성, 조회, 반환을 관리 (Bean의 생명주기를 관리)
- getBean() 메서드가 정의되어 있음
- 보통 Bean Factory를 확장한 ApplicationContext를 사용한다.
ApplicationContext
- Bean Factory에 여러가지 컨테이너 기능을 추가한 것
- Bean Factory의 업그레이드 버전
- Spring이 제공하는 ApplicationContext 구현 클래스가 여러 종류가 존재함
- Bean Factory와 ApplicationContext는 모두 인터페이스임
- 궁극적으로 DI 컨테이너 역할을 함
4. 느낀점
용어가 많아 헷갈릴만 하다. 특히, IoC 컨테이너, DI 컨테이너, Spring 컨테이너, 애플리케이션 컨텍스트(ApplicationContext) 모두 같은 것임을 명심하면 좋겠다.
반응형
'Web > Spring Boot' 카테고리의 다른 글
@EventListener & @PostConstruct (0) | 2022.06.09 |
---|---|
[Spring] @RestControllerAdvice (0) | 2019.07.16 |
[Spring] AOP (0) | 2019.06.26 |
[Spring] DI (Dependency Injection) (0) | 2019.06.24 |
[Spring] Logback 사용법(gradle) (0) | 2019.06.18 |