-
객체지향 방식의 개발을 위해 반드시 지키려고 노력해야 할 철학과 디자인 패턴들이 있다(다형성, SOLID 원칙 등)
- 그러나 개발과정에서 일일히 저런 철학들을 지켜가며 구현하기란 쉽지 않다
- 개발자가 다형성을 지키도록 코딩 하더라도, SOLID원칙이 자동으로 지켜지는 것은 아니다
-
스프링은 이런 핵심적인 철학들을, 프레임워크 내에 자연스럽게 녹여내, 개발자가 편안하게 객체지향의 개발을 할수 있도록 도와주는 역할을 한다
- 특히 다형성 을 중심으로 한 의존성 역전 원칙을 자동으로 처리해 준다
-
EJB 필요 없이, POJO만으로도 객체지향의 철학을 잘 지킬 수 있음을 보여주는 것이 스프링의 철학이다
- Bean Factory, ApplicationContext등의 개념을 POJO로 구현
-
환경의 변화와 관계없이, PSA(Portable Service Abstraction)의 추상화를 제공한다
- PSA의 중요성을 알려면, 기존 서블릿 개발과의 차이점을 이해해야 한다 (스프링에서는 기존 서블릿 개발과는 다르게 서블릿을 하나도 쓰지 않는다)
- 기존 서블릿 개발에서는, 서블릿 클래스만 존재하고 이 클래스가 모든 매핑과 요청을 처리한다
- 스프링 개발에서는 매핑은 컨트롤러가, 처리는 서비스가 처리하도록 분리한다
- 또한 서비스는 추상화된 역할의 인터페이스로 존재하고, 그 구현 클래스가 처리하도록 한다
- Webflux등의 새로운 기술스택을 적용할때 쉽게 전환(갈아끼울) 수 있다
서비스 추상화
-
공통적인 요소들을 AOP를 통해 지원해 준다
[Spring] 스프링 AOP (Spring AOP) 총정리 : 개념, 프록시 기반 AOP, @AOP