일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 코드스테이츠 부트캠프 합격 후기
- 코드스테이츠 부트캠프
- 금감원
- 메서드
- 금융감독원 민원신청
- 코드스테이츠 합격 후기
- 자바
- 백내장 금감원
- Java
- 코드스테이츠 백엔드 교육과정
- 코테 합격후기
- HLB
- 코드 스테이츠 백엔드 교육과정
- 코드스테이츠 백엔드 부트캠프 합격
- 금감원 백내장 민원
- CodeState 후기
- 백준 알고리즘
- 금융감독원
- Spring
- 보험금 지급거절
- 에이치엘비
- codestates 국비지원 1기 합격 후기
- 코드스테이츠 백엔드 후기
- Gamsgo
- 해시
- Code States 백엔드 합격 후기
- 백내장 다초점렌즈 삽입술
- 코드스테이츠 합격
- 겜스고
- 백내장
Archives
- Today
- Total
개발하는 동그리
IoC(Inversion of Control) / DI (Dependency injection) 본문
반응형
제어의 역전 Ioc (Inversion of Control)
제어의 역전 미사용
- 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고 실행을 했다. 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다 - 개발자 입장에서는 자연스러운 흐름 그러나 이렇게 코딩할 경우 DIP, OCP 규칙에 어긋난다.
제어의 역전 사용
- 각 구현 객체는 자신의 로직만 실행하고, 프로그램의 제어 흐름은 AppConfig가 통제한다. 이처럼 프로그램의 제어 흐름을 외부에서 관리하는 것을 제어의 역전( IoC ) 라고 부른다.
의존관계 주입 DI ( Dependency injection )
정적인 의존관계
- 클래스의 import 코드로 의존관계를 파악할 수 있는데 이를 정적인 의존관계라 한다. DI 프로그래밍에서는 정적인 의존관계로 어떤 객체가 주입될지는 알 수 없다. 왜냐하면 프로그램의 제어를 AppConfig가 다루고 있기 때문이다.
동적인 의존 관계
- 애플리케이션 실행 시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존 관계
- 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달하여 클라이언트와 서버의 실제 의존관계가 연결되는 것 ( 의존관계 주입 )
- 클라이언트의 코드는 변경되지 않고, 호출하는 대상 타입의 인스턴스를 변경할 수 있다. ( 핵심 )
- 마찬가지로 의존관계 주입을 사용하면 정적인 클래스의 의존관계에 영향을 주지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다. (OCP, DIP)
IOC 컨테이너 < DI 컨테이너 (최근 트렌드)
- AppConfig 처럼 외부에서 객체를 생성하고 관리하면서 의존관계를 연결해주는 것을 DI 컨테이너라 부르고 의존관계 주입이라고 한다.
- IOC 컨테이너, DI 컨테이너, 어샘블러, 오브젝트 팩토리 등 같은 의미의 용어들이 있는데, 최근 가장 많이 사용하는 용어는 DI 컨테이너 다.
반응형
'IT 정보 > Spring' 카테고리의 다른 글
[네트워크] URL / URI (4) | 2022.06.05 |
---|---|
[네트워크] 프로토콜과 API (7) | 2022.06.05 |
스프링 이야기 (35) | 2022.06.02 |
SOLID (객체 지향 설계의 5가지 원칙) (7) | 2022.06.02 |
관심사의 분리 -MVC 패턴 (7) | 2022.05.12 |