728x90
제어의 역전 IoC (Inversion of Control)
- 구현 객체가 프로그램의 제어흐름을 스스로 조종하는 건 자연스러운 흐름
- 반면, AppConfig가 등장하며, 구현 객체는 자신의 로직을 실행하는 역할만 담당. 제어 흐름은 AppConfig가 가짐
이런 것처럼 프로그램의 제어 흐름을 직접 제어하는 것이 아니라, 외부에서 관리하는 것을 제어의 역전(IoC)
프레임워크 vs 라이브러리
프레임워크가 내 코드를 제어 & 실행 => 프레임워크 o (Junit)
내 코드를 직접 제어흐름 담당 => 라이브러리 (xml, json, ... )
의존관계 주입 DI (Dependency Injection)
"정적인 클래스 의존 관계"
- 클래스의 import를 보고 의존관계 파악 o
- 애플리케이션 실행 안 해도 분석 o
"동적인 객체(인스턴스) 의존 관계"
- 애플리케이션 실행 시점에 실제 생성된 객체 인스턴스의 참조가 연결
- 실행시점(런타임) 에 외부에서 실제 구현 객체를 생성하고, 클라이언트에 전달해서, 클라이언트와 서버의 실제 의존관계가 연결 = 의존관계 주입
- 객체 인스턴스를 생성 -> 참조값 전달
So, 정적인 클래스 의존관계 변경하지 않고, 동적인 객체 인스턴스 의존관계 쉽게 변경 o
IoC 컨테이너 := DI 컨테이너
말 그대로 IoC, DI를 해주는 컨테이너
의존관계 연결
의존관계 주입에 초점 -> 최근에는 주로 DI컨테이너
또는 어샘블러, 오브젝트 팩토리 라고 불린다.
728x90
'백엔드(Back-End) > Spring Boot' 카테고리의 다른 글
[sts4-Spring Boot] 10. 게시글 삭제하기 (0) | 2023.12.05 |
---|---|
[sts4-Spring Boot] 09. 게시글 읽기/수정하기 (0) | 2023.12.05 |
[sts4-Spring Boot] 08. List - 게시글 목록 보여주기 (0) | 2023.12.04 |
[sts4-Spring Boot] 07. Create - 웹에서 게시글 등록하기 구현 (1) | 2023.12.04 |
[sts4-Spring Boot] 갑자기 sql database 에러날 때 (1) | 2023.12.04 |