Spring에 왜 객체 지향 이야기가 나오는가?
- Spring은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원한다
- DI(Dependency Injection) : 의존 관계, 의존성 주입
- DI Container 제공
- Java의 객체들을 어떤 컨테이너 안에 넣어놓고
그 안에서 의존 관계를 서로 연결해주고 주입해주는 기능을 제공해주는 역할
- 클라이언트 코드의 변경 없이 기능 확장
Spring이 없던 시절
- 옛날 어떤 개발자가 좋은 객체 지향 개발을 하려고 OCP, DIP 원칙을 지키면서
개발을 해보니 너무 할 일이 많았다. 배보다 배꼽이 더 크다.
그래서 Framework로 만들어버렸다
- 순수하게 Java로 OCP, DIP 원칙들을 지키면서 개발을 해보면,
결국 Spring Framework를 만들게 된다 (더 정확히는 DI Container)
- DI 개념은 말로 설명해도 이해가 잘 안된다.
코드를 짜봐야 필요성을 알게 된다
- 그러면 이제 Spring이 왜 만들어졌는지 코드로 이해해보자
정리
- 모든 설계에 역할과 구현을 분리하자
- 자동차, 공연의 예시를 떠올려 보자
- Application 설계도 공연을 설계 하듯이 배역만 만들어 두고,
배우는 언제든지 유연하게 변경할 수 있도록 만드는 것이 좋은 객체 지향 설계다
- 이상적으로는 모든 설계에 인터페이스를 부여하자
→ 하부 기술의 선택을 최대한 미룰 수 있는 장점이 있다 (Ex. DB 선택)
→ 구현 기술이 바뀌더라도 나머지를 변경할 필요가 없고
변경의 범위가 작고 유연해진다는 장점이 있다