본문 바로가기
Spring

스프링 3대 핵심 - ② PSA (Portable Service Abstraction)

by 성건희 2020. 2. 18.
반응형

PSA 잘 만든 인터페이스


확장성이 좋지 못한 코드 or 기술에 특화되어 있는 코드

  • 테스트하기 힘들다
  • 변화에 유연하지 못함

 

잘 만든 인터페이스

JDBC를 쓰다가 하이버네이트로 전환해야 하는 상황

  • JDBC를 하이버네이트로 변경 했지만, 나의 코드가 바뀌지 않는다

 

스프링이 제공해주는 대부분의 API가 PSA다. (약 90%)

ex) Resources, Transactions, JDBC, ORM ...

 

대표적인 PSA

@Transactional

PlatformTransactionManager 인터페이스를 사용해서 구현되어있음

 

구현체 종류

JpaTransactionManager / DatasourceTransactionManager ...

따라서 빈이 바뀌더라도 트랜잭션을 처리하는 Aspect 코드는 바뀌지 않는다.

 

@Cacheable

CacheManager 인터페이스를 사용해서 구현되어있음

 

구현체 종류

JCachgeManager / ConcurrentMapCacheManager ...

 

스프링 웹 MVC

@Controller / @RequestMapping / @GetMapping ...

하지만 이것이 Servlet 을 쓰는지, Reactive를 쓰는지 알 수 없다.

대부분의 코드가 추상화가 되어 있기 때문에, Servlet을 Reactive 코드로 바꾸더라도 나의 코드는 바뀌지 않는다.

 

참고

https://www.inflearn.com/course/spring/dashboard

 

 

반응형

댓글