[섹션 1. 객체 지향 설계와 스프링] 객체 지향 설계와 스프링 (+ 스프링 프레임 워크 탄생 배경)/ 인프런 김영한 스프링 핵심 원리 기본편
이번 시간에는 객체 지향 설계를 스프링과 관련하여 다루는 시간을 가졌다.
다시 스프링으로 돌아와서 스프링에 왜 객체 지향 얘기가 나오는가?
스프링이 제공하는 기술들로는,
DI(Dependency Injection), 의존관계 혹은 의존성 주입라고 한다.
그리고 DI 컨테이너가 있는데, DI 컨테이너는 자바 객체들을 스프링 컨테이너에 넣어놓고,
이 안에서 의존관계를 서로 연결해주고 주입해주는 기능이다.
이런 기술들을 통해서, 클라이언트 코드를 변경 없이 기능을 확장할 수 있다.
그렇기 때문에, 마치 부품을 교체하듯이 개발을 가능하게 한다.
- 스프링 프레임 워크가 탄생하게 된 배경
스프링이 없던 시절로 돌아가서,
어느 한 개발자가 좋은 객체 지향 개발을 하기 위해서,
OCP, DIP 원칙을 지키면서 개발을 했는데, 개발을 해보니 너무 할 일이 많았다.
내가 개발하려는 코드보다 원칙을 지키기 위해 만드는 것들이 오히려 더 많은, 배보다 배꼽이 더 큰 현상이 발생했다;;
그래서 프레임 워크로 만들었다.
순수하게 자바로 OCP, DIP 원칙을 지키면서 개발을 하게 되면, 결국 스프링 프레임 워크를 만들게 된다.
(더 정확히는 DI 컨테이너)
- 인터페이스 도입의 단점
실무적인 관점에서 봤을 때,
인터페이스를 도입하게 되면 추상화라는 비용이 발생하게 된다.
인터페이스를 만들게 되면, 직접 코드를 확인하기 위해서는 구현체 클래스를 한번 더 확인해야 하는 번거로움이 생긴다.
그렇기 때문에, 기능을 확장할 가능성이 없다고 하면 구체 클래스를 바로 쓰는것이 나은 방법일 수 있다.
그리고 향후에 꼭 필요하면 리팩토링해서 인터페이스를 도입하는 방법도 있다.
반대로 말하자면, 확장 가능성이 있다고 하면 인터페이스를 도입하는것이 낫다!
이런 것들을 고민하고 잘 설계하는게 좋은 개발자라고 할 수 있다~~!