앞서서 스프링 삼각형의 IoC/DI와 AOP를 살펴봤습니다
이번에는 스프링 삼각형의 마지막인 PSA에 대해서 살펴보겠습니다
PSA(Portable Service Abstraction)은 휴대용 서비스 추상화라는 뜻으로, 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조를 말합니다
먼저, Service Abstraction이란 내부적으로 작동하는 기능들을 숨기고, 추상화하여 개발자에게 제공하여 편리성을 주는 것을 말합니다. 예를 들어, 개발자들은 @Transactional이 어떻게 구현되어 있는지 알지 못해도 이를 편리하게 사용할 수 있습니다
Portable은 휴대용이라는 의미로 철저히 코드를 unit화 하는것을 말합니다. 내장 서버를 바꿔도, DB를 바꿔도, 비즈니스 로직을 변경할 필요가 없습니다.
이러한 PSA를 통해 확장에는 열려있고 수정에는 닫혀있어야 한다는 OCP를 지킬 수 있습니다
대표적인 PSA로 @Transaction, Spring Web MVC가 있습니다.
Transaction을 직접 구현하려면 Commit, Rollback 등의 기능을 추가해야 합니다. 하지만, Spring Boot의 @Transactional 어노테이션을 활용하면 이러한 기능들을 제공해줍니다.
마찬가지로, Spring Web Mvc에서 Http get method에 대한 매핑을 생성할 때, HttpServlet의 doGet() 메소드를 오버라이딩하는것이 아닌 @GetMapping을 통해서 간편하게 매핑을 할 수 있습니다