외부 라이브러리들을 어댑터 패턴
을 적용해서 공통의 인터페이스로 제어할 수 있게 한 것.
일종의 껍데기를 씌워 추상화한것.
어댑터 패턴
: 클래스의 인터페이스를 사용자가 원하는 다른 인터페이스로 변환하는 패턴. 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들을 함께 동작할 수 있도록 한다.
스프링 프레임워크는 서비스 추상화를 위해서 다양한 어댑터를 제공한다.
@Transactional
기존에는 commit, rollback을 통해서 직접 트랜잭션 처리를 했다면
@Transactional 어노테이션만으로 트랜잭션 처리가 가능하다.
JDBC를 사용하는 DatasourceTransactionManager
JPA를 사용하는 JpaTransacionManager
Hibernate를 사용하는 HibernateTransactionManager 등의 여러 구현체를 사용할 수 있다.
@Controller
일반 클래스에 @Controller 어노테이션을 사용하면 요청을 매핑할 수 있는 컨트롤러 클래스가 된다. 또한 의존성 설정에서 tomcat이 아닌 netty 기반으로 실행되게 변경할 수 있다.
@Cacheable
JCacheManager, ConcurrentMapCacheManager, EhCacheCacheManager 등의 여러 구현체를 사용할 수 있다.
참조
- 스프링 입문을 위한 자바객체지향의 원리와 이해 (책)