본 게시글은 김영한님의 스프링 핵심 원리 기본편을 정리한 글입니다.
🔍 스프링 이야기에 왜 객체 지향이 이렇게 나왔을까?
아까 얘기했던 것처럼 기존의 방식처럼 진행을 하게 된다면은 OCP, DIP와 같은 좋은 객체지향의 설계의 원칙들을 지키기 어렵게 된다.
그렇지만 스프링에서는 이를 해결할 수 있도록 도와준다.
- 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원
- DI(Dependency Injection): 의존관계, 의존성 주입
- DI 컨테이너 제공
- 클라이언트 코드의 변경 없이 기능 확장
- 쉽게 부품을 교체하듯이 개발
🔍 스프링이 없었을때는?
- 옛날 옛적 좋은 객체 지향 개발을 할려고 하는 개발자가 OCP, DIP 원칙을 지키면서 개발을 해보니, 배보다 배꼽이 큰 상황이 발생하여 프레임워크로 만들어 버렸다는...
- 그래서 순수하게 자바로 OCP, DIP를 지키려고 하다보면 자연스럽게 스프링 프레임워크를 만들게 된다는 현실(더 정확하게는 DI컨테이너를 만들게 된다.)
📌 최종 정리
- 모든 설계에서는 역할과 구현을 분리를 하자.
- 자동차, 공연의 예를 떠올려보면 된다.
- 애플리케이션 설계도 언제든지 유연하게 변경할 수 있도록 만든 것이 좋은 객체 지향 설계다.
- 이상적으로는 모든 설계에 인터페이스를 부여하는 것이 좋다.
출처
- 김영한님의 스프링 핵심 원리 기본편(https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8)