@Transactional
, @Cacheable
과 같은 인터페이스를 제공해서 내부 구현체를 추상화하고 쉽게 사용가능하도록 해준다.e.g.)
Was 를 tomcat
에서 undertow
로 변경하기 위해 mvc 의존성을 webmvc 에서 webflux 로 바꾸어 주기만 하면 Controller 레이어의 변경이 없이 가능하다.
Repository 의 구현을 Jdbc에서 Jpa 로 바꾸어도 PlatformTransactionManager
의 구현체를 DataSourceTransactionManager
에서 JpaTransactionManager
, 로 바꾸는 작업은 설정으로 자동으로 이루어 지기때문에 서비스 계층의 코드 변경이 없이 가능하다.
Spring 캐시 역시 다양한 CacheManager
의 구현을 어노테이션(@Cacheable
) 만으로 편리하게 제공하며 구현체를 변경할 수 있다.