- 환경과 기술의 변화에 상관없이 일관된 방식으로 기술을 사용(접근)할 수 있게 해주는 추상화
- POJO의 원칙에 부합되는 개념이다.
- 스프링은 JAVA의 복잡한 라이브러리들을 추상화 시켜 편리하게 사용하도록 해준다.
@Transactional
,@Cacheable
과 같은 인터페이스를 제공해서 내부 구현체를 추상화하고 쉽게 사용가능하도록 해준다.
- Tomcat 과 Netty 를 의존성만 변경하면 사용할 수 있는 것도 PSA 를 통해 추상화되어있기 때문에 가능하다.
- 개발자는 로직에만 집중할 수 있다.
e.g.)
- Was 를
tomcat
에서undertow
로 변경하기 위해 mvc 의존성을 webmvc 에서 webflux 로 바꾸어 주기만 하면 Controller 레이어의 변경이 없이 가능하다.
- Repository 의 구현을 Jdbc에서 Jpa 로 바꾸어도
PlatformTransactionManager
의 구현체를DataSourceTransactionManager
에서JpaTransactionManager
, 로 바꾸는 작업은 설정으로 자동으로 이루어 지기때문에 서비스 계층의 코드 변경이 없이 가능하다.
- Spring 캐시 역시 다양한
CacheManager
의 구현을 어노테이션(@Cacheable
) 만으로 편리하게 제공하며 구현체를 변경할 수 있다.