반응형
SOLID
SRP 단일 책임 원칙
- 클라이언트는 실행하는 책임만
- AppConifg가 구현하고 연결하는 책임
DIP 의존 관계 역전 원칙
- 클라이언트가 인터페이스 + 구현체를 의존하는 것이 아닌, 인터페이스만 의존
- 구현체가 없어 실행이 불가능 (NPE)
- AppConifg를 생성하여 클라이언트에 구현체 의존성을 주입
OCP 개방 폐쇄 원칙
- AppConfig의 구현체만 갈아끼면 동작 변경 가능(서비스 로직 변경X)
- 새로운 구현체가 생성(확장)되어도 사용 영역의 소스는 변경되지 않는다.
IoC, DI, 컨테이너
IoC (제어의 역전)
- 기존에선 클라이언트가 구현체까지 의존하여 실행했다.
- AppConfig이후엔 클라이언트는 로직만 실행하게 됐다. 프로그램의 제어 흐름은 AppConfig가 관리
- 이처럼 프로그램의 제어 흐름을 외부에서 관리하는 것을 IoC라 한다.
프레임워크 vs 라이브러리
- 프레임워크는 내가 작성한 코드를 제어하고 대신 실행
- 라이브러리는 내가 작성한 코드를 직접 흐름을 담당
DI (의존관계 주입)
- 인터페이스만 의존하면, 외부에서 실제 구현체를 주입해준다.
- 정적 클래스 의존관계
- import 코드로 의존관계 판단. 실행하지 않아도 분석 가능
- 실제 어떤 객체가 주입될지는 알 수 없다.
- 동적 클래스 의존관계
- 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현된 객체를 생성하고 관계를 전달하는 것을 의존 관계 주입이라고 한다.
- 객체 인스턴스를 생성하고, 그 참조값을 전달하여 연결
IoC 컨테이너, DI 컨테이너
- AppConfig처럼 객체를 생성하고 의존관계를 연결해주는 것
- 의존 관계 주입에 초점을 맞추어 최근엔 주로 DI 컨테이너로 불린다.
728x90
반응형
'스프링' 카테고리의 다른 글
스프링 핵심 원리 - (8) (0) | 2022.08.05 |
---|---|
스프링 핵심 원리 - (7) (0) | 2022.08.05 |
스프링 핵심 원리 - (5) (0) | 2022.08.04 |
스프링 핵심 원리 - (4) (0) | 2022.08.03 |
스프링 핵심 원리 - (3) (0) | 2022.08.03 |
댓글