"잘 만든 인터페이스 하나가 열 클래스 부럽지 않다"
PSA = 잘 만든 인터페이스
Spring 에서 제공하는 대부분의 인터페이스는 PSA 입니다.
PSA가 적용된 코드라면 확장성이 좋고, 기술에 특화되어 있지 않는 코드를 의미합니다.
트랜잭션(Transaction)
대표적인 예시로 @Transactional > PlatformTransactionalManager 의 인터페이스가 중요하다.
PlatformTransactionalManager 의 구현체들이 바뀌더라도 그 PlatformTransactionalManager 의 코드는 변경되지 않습니다.
Data Access
The Data Access Object (DAO) support in Spring is aimed at making it easy to work with data access technologies (such as JDBC, Hibernate, or JPA) in a consistent way. This lets you switch between the aforementioned persistence technologies fairly easily, a
docs.spring.io

예를 들어
JDBC를 사용하는 DatasourceTransactionManager,
JPA를 사용하는 JpaTransactionManager,
Hibernate를 사용하는 HibernateTransactionManager를
유연하게 바꿔서 사용할 수 있습니다.
즉, 기존 코드는 변경하지 않은 상태로, 트랜잭션을 실제로 처리하는 구현체를 사용 기술에 따라 바꿔 끼울 수 있는 것을 말합니다.
스프링 캐시 (CacheManager)
@EnableCaching
애노테이션의 사용으로 캐시를 사용할 수 있습니다.

여기서는 JCache를 사용했지만, @EnableCaching 주석을 통해, EhCache 그 외 다른 캐시 매니저를 사용할 수 있게 해줍니다.
Spring Web MVC

Spring Web MVC에서 @ReqeustMapping 또한 PSA의 한 영역이라고 할 수 있다. Reactive 프로그래밍으로 변경시 간략하게 변경가능하다.
'Spring 이해하기' 카테고리의 다른 글
@DataJpaTest 흟어보기 (0) | 2020.12.12 |
---|---|
@Fetch(FetchMode.SUBSELECT) 과 IN subquery 는 왜 느릴까? (0) | 2020.10.14 |
LazyInitializationException 를 벗어나기 위해서는 어떻게 해야될까? JPA에서 최적의 쿼리를 보내는 방법은 무엇일까? (0) | 2020.10.03 |
대체 JPA에서 Proxy 로 초기화된다는 말이 뭔데? (0) | 2020.10.02 |
Ioc(Inversion of Controller) (0) | 2020.08.26 |
댓글