본문으로 바로가기

[스프링 핵심개념]PSA(Portable Service Abstraction )

category 스프링 2020. 5. 20. 23:17

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의-개념