제어의 역전
(Inversion of Control)
소프트웨어 공학에서, IoC는 프로그래머가 작성한 프로그램이
재사용 라이브러리의 흐름 제어를 받게 되는 소프트웨어 디자인 패턴을 말한다.
제어의 역전 패턴에는 크게 두 가지가 있다.
1. Dependency Injection(Di)
객체가 필요로 하는 의존성(dependecy)을 직접 생성하지 않고
외부에서 주입받아 사용하는 방법이다. 이를 통해 의존성 주입을 통해
객체 간의 결합도를 낮추고 유연성을 높일 수 있다.
2. Template Method 패턴
상위 클래스에서 알고리즘의 구조를 정의하고, 하위 클래스에서
구체적인 구현 내용을 결정하는 패턴이다. 이를 통해 하위 클래스에서
구현 내용을 변경하여 동작 방식을 다양화할 수 있다.
IoC 컨테이너
스프링에서는 IoC 컨테이너가
객체의 생성, 관리, 의존성 주입 등을 담당하여 개발자가 객체 생성과
관리에 집중하지 않고 비즈니스 로직 구현에 집중할 수 있도록 한다.
- IoC컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다.
- POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.
- 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다.
- 개발자는 비즈니스 로직에 집중할 수 있다.
- 객체 생성 코드가 없으므로 TDD가 용이하다.
POJO(Plain Old Java Object)
주로 특정 자바 모델이나 기능, 프레임워크를 따르지 않는 Java Object를 말한다.
대표적으로 Java Bean 객체가 있다.
IoC의 분류
의존관계 검색
DL(Dependency Lookup)
저장소에 저장되어잇는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여
Bean을 직접 검색 하는것
의존관계 주입
DI(Dependency Inversion)
각 클래스 간의 의존관계를 빈 설정(Bean Definitio) 정보를 바탕으로 컨테이너가 자동으로
연결해 주는 것
내용 참고 - coco -
내용 참고 - velog_dusdn2424 -
참고하면 좋은 자료 - 템플릿 메서드 패턴이란 -
'자바 탐구' 카테고리의 다른 글
스프링) HTTP 상태코드 (0) | 2023.04.25 |
---|---|
스프링) Bean (0) | 2023.04.23 |
스프링) 의존관계 주입(Dependency Injection) (0) | 2023.04.23 |
스프링 부트) Dependency : Spring Boot DevTools (0) | 2023.04.21 |
인텔리제이) FAILURE : Build failed with an exception. (0) | 2023.04.21 |