PSA(Portable-Service-Abstraction)

CREE·2023년 9월 4일
0

Spring

목록 보기
4/4
post-thumbnail

PSA(Portable Service Abstraction)

PSA = 잘 만든 인터페이스

위의 등식이 성립하는 이유는 PSA가 환경과 세부 기술의 변경에 관계 없이 일관된 접근 방식을 제공하기 위한 설계 원칙이기 때문이다.

즉 내부의 무엇인가 일이 일어나든 그것을 감추고 일관된 인터페이스를 제공하는 것이다.

PSA가 적용된 코드는
나의 코드가 바뀌지 않고, 다른 기술로 간편하게 바꿀 수 있도록 확장성이 좋고,
기술에 특화되어 있지 않는 코드를 의미한다.

PSA가 적용된 부분

스프링이 제공하는 대부분의 API는 PSA가 적용되어 있다.

1. Spring 트랜잭션

@Transactional

platformTransactionManager 인터페이스로 구현하였기 때문에 구현체가 무엇이 되었든 실질적으로 Transaction을 처리하는TransactionAspect 의 코드는 변하지 않는다.

2.Spring 캐싱

@Cacheable | @CacheEvict | ...

CacheManager 인터페이스를 통해 구현했기 때문에 Transaction과 같이 해당 어노테이션을 처리하는 Aspect의 코드가 변할 필요가 없다.

3.Spring web MVC

@Controller | @RequestMapping | ...

해당 어노테이션이 어디서 처리되는지는 알 필요 자체가 없다.

profile
이리저리 컴공과

0개의 댓글