개발자가 특정 기술에 구속되지 않고 쉽게 기술 스택을 변경하고 확장할 수 있도록 하는 것
PSA(Portable Service Abstraction)는 일관성 있는 서비스 추상화를 의미한다.
서비스 추상화란, 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한 것이다.
스프링 프레임워크에서는 서비스 추상화를 위해 다양한 어댑터를 제공한다.
예를 들어, OXM(Object XML Mapping, 객체와 XML을 매핑) 기술의 경우 다음과 같은 기술들이 있다.
그리고 이 기술들이 제공하는 API는 제각각이다.
스프링은 이 제각각인 API를 위한 어댑터를 제공함으로써, 실제로 어떤 OXM 기술을 쓰든 일관된 방식으로 코드를 작성할 수 있게 지원한다.
또한, 하나의 OXM 기술에서 다른 OXM 기술로 변경할 때 큰 변화 없이 세부 기술을 교체해서 사용할 수 있게 해준다.
이처럼 서비스 추상화를 해주면서 그것도 일관성 있는 방식을 제공한다고 해서 이를 ‘일관성 있는 서비스 추상화’, 다시 말해 PSA라고 한다.
추상화를 사용하면 특정 기술 환경에 종속되지 않게 개발할 수 있다.
그리고 이렇게 지원해주는 것에는 스프링의 DI가 매우 중요한 역할을 하고 있다.
DI는 모든 스프링 기술의 기반이 되는 핵심 엔진이자 원리이다.
서비스 추상화를 통해 객체지향 설계의 원칙 중 하나인 단일 책임 원칙(SRP)를 충족할 수 있다.
단일 책임 원칙은 하나의 클래스(모듈)이 바뀌는 이유는 한 가지여야 한다는 원칙이다.
📔 스프링 입문을 위한 자바 객체 지향의 원리와 이해