본문 바로가기
스프링

스프링 핵심 원리 - (6)

by 공부 안하고 싶은 사람 2022. 8. 4.
반응형

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

댓글