PSA(Portable Service Abstraction)
: 환경의 변화와 관계없이 일관된 방식의 기술 접근 환경을 제공하려는 추상화 구조. 추상화 계층을 사용하여 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는 것을 추상화(Service Abstraction)라고 한다. (이하 추상화)
- 하나의 추상화로 여러 서비스를 묶어둔 것을 PSA(Portable Service Abstraction)이라고 한다.
- Spring의 대표적인 핵심가치 3가지(Ioc, AOP, PSA)중 하나의 개념이다.
=> Ioc와 AOP 정리내용 확인: https://xggames.tistory.com/13
- Spring은 다양한 기술에 추상화(Service Abstraction)을 제공하고 있다.
Web MVC 추상화
@Controller 어노테이션을 사용하면 @GetMapping, @PostMapping 등으로 요청을 Mapping할 수 있다. (@Controller 어노테이션이 없으면, 매핑 불가능)
Spring Web MVC의 해당 어노테이션을 사용하면 우리는 서블릿을 간편하게 개발할 수 있는데, 뒷단에 Spring이 제공해주는 여러 기능들이 숨겨져 있기 때문이다. HttpServlet을 상속받고 doGet(), doPost()를 구현하는 등의 작업을 직접 하지 않아도 된다. 추상화의 목적 중 하나아 이러한 편의성을 제공하는 것이다
Spring Transaction
@Transactional(readOnly = true)
Users findById(Long id);
트랜잭션을 처리하려면 commit(), rollback() 등의 관련 작업들을 명시적으로 호출해주어야 한다. 하지만 @Transactional 어노테이션을 메소드에 붙여서 사용하면 별도로 코드를 구현하지 않고도 트랜잭션 처리가 가능하다.
그리고 Spring에서는 PlatformTransactionManager이라는 최상위 Manager를 사용하고 각각 사용자의 선언에 따라서
- JPATransactionManager
- DatasourceTransactionManager
- HibernateTransactionManager
등.. 상황에 맞게 의존성 주입을 받아 사용하는데, 이런 기술들은 역시 뒷단에 숨겨서 처리를 알아서해주며 개발자가 별도로 처리할 필요가 없어진다.
Spring Cache
@Cacheable("users")
List<User> findAllUser();
Cache쪽도 마찬가지다. @Cacheable 어노테이션만 선언해주면 된다.
- JCacheManager
- ConcurrentMapCacheManager
- EhCacheCacheManager
와 같은 여러가지 구현체를 사용할 수 있다.
참고자료
= https://sabarada.tistory.com/127
= https://atoz-develop.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-PSA
'SpringFramework > Spring' 카테고리의 다른 글
Spring - 스케줄러 중복실행 이슈분석 (0) | 2022.03.14 |
---|---|
Spring - Mybatis 샵(#)과 달러($)의 차이 (0) | 2022.03.10 |
Spring - Mybatis FrameWork 여러 스키마 적용하기 (0) | 2022.02.08 |
Spring - 인스턴스 변수 참조 (0) | 2021.10.20 |
Spring - Redis 연동 (0) | 2021.10.20 |