PSA(Portable Service Abstraction)란?
환경, 기술의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하려는 추상화 구조
즉, 잘 만든 인터페이스라고 할 수 있다.
(인터페이스에 대해 https://sallykim5087.tistory.com/96 )
예시
1. 스프링 트렌젝션
@Transactional 어노테이션을 처리할 Aspect가 어딘가에 정의 되어 있다.
그리고 그 Aspect에서는 기술에 독립적인 PlatformTranactionManager 라는 인터페이스를 사용해서 코딩을 해 놓았다.
따라서 PlatformTranactionManager 를 사용한 다른 구현체들의 내용이 변경되더라도 Transaction Aspect의 코드는 변하지 않는다.
2. 스프링 웹 MVC
@Controller @RequestMapping 를 사용하여 MVC 패턴을 구현하는 경우,
Servlet 또는 Reactive 를 사용해서 구현할 수 있다.
그러나 작성된 코드를 보면 Servlet 과 Reactive 중 어떤 것에 의존해서 구현되었는지 알 수 없다.
maven으로 프로젝트를 관리할 경우 pom.xml에서 의존성을 확인할 수 있으며, 혹시 servlet말고 reactive로 하단의 기술을 변경하더라도 많은 부분에서 기존 코드의 수정 없이 그대로 사용할 수 있다.
참고자료
https://www.inflearn.com/course/spring/lecture/15549
https://jins-dev.tistory.com/entry/Spring-PSAPortable-Service-Abstraction의-개념
'스프링' 카테고리의 다른 글
[스프링의 대표개념]AOP (0) | 2020.05.19 |
---|---|
[스프링의 대표개념] IoC / DI (0) | 2020.05.19 |
[Eclips] Eclips 속도 개선 (메모리 용량 수정하기, close project) (0) | 2020.02.05 |
Spring Security Core 다운 (0) | 2020.02.04 |
[AOP] AOP 사용해보기 (0) | 2020.01.31 |