본문 바로가기
Spring Study/Spring 기본

[Spring 기본] SOLID원칙과 IoC, DI

by 정재인 2023. 7. 31.

■ 좋은 객체 지향 설계 5가지 원칙 (SOLID)

SRP(Single Responsibility Principle): 단일 책임 원칙
OCP(Open Closed Priciple): 개방 폐쇄 원칙
LSP(Listov Substitution Priciple): 리스코프 치환 원칙
ISP(Interface Segregation Principle): 인터페이스 분리 원칙
DIP(Dependency Inversion Principle): 의존 역전 원칙

 

코드 작성시 발생하는 DIP 문제 예시 

클라이언트 코드 OrderServiceImpl DiscountPolicy의 인터페이스 뿐만 아니라 구체 클래스도 함께 의존

→ 이를 해결하기 위함이 관심사 분리

 애플리케이션의 전체 동작 방식을 구성(config)하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스 생성


 IoC, DI 컨테이너

● IoC(Inversion of Control): 제어의 역전 

- 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리

 

DI(Dependency Injection): 의존관계 주입 

- 정적 클래스 의존 관계와 실행 시점에 결정되는 동적 객체(인스턴스) 의존 관계를 분리해서 생각

- 애플리케이션 실행시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서

   클라이언트와 서버의 실제 의존관계가 연결 되는 것

- 객체 인스턴스 생성, 그 참조 값 전달

- 클라이언트 코드 변경 X -> 클라이언트 호출 대상 타입 인스턴스 변경 O

 

 

 

 

댓글