PSA(Portable Service Abstraction)
PSA : 교체가 용이한 서비스 추상화( 잘 만든 인터페이스 )
확장성이 좋지 못하거나 기술에 특화돼있는 코드 : 테스트 만들기 어렵고 기술이 바뀔때마다 고치기 힘듦
스프링이 제공하는 대부분의 API가 PSA
= Spring Framework는 인터페이스만 잘 알아도 쓰기 용이
@Transactional을 예로 들면
어노테이션과 그 실행 aspect 클래스가 따로 존재한다.
그 aspect는 Transaction 기술과는 독립적인 PlatformTransactionManager라는 인터페이스가 사용된 코드
PlatformTransactionManager 인터페이스의 구현체들이 바뀌더라도 TransactionAspect의 코드는 바뀌지 않는다.
구현체들 중 여러가지가 bean 으로 등록돼있음 ex) JPA
aspect는 PlatformTransactionManager를 사용하여 코딩했기 때문에
jpaTransactionManager에서 DatasourceManager로 바뀌더라도 Transaction을 처리하는 aspect 코드는 바뀌지 않음
(인터페이스가 가진 기본 기능, 기본 틀은 바뀌지 않는다는 뜻)
스프링 캐시( Cache Manager)
@EnableCaching // 캐시 관련된 기능(어노테이션들) 활성화시키는 어노테이션
ex) @Cacheable / @CacheEvict / ...
@Cacheable / @CacheEvict 각각을 처리하는 Aspect가 있을것이고 aspect에서 CacheManager를 사용
Manager 구현 클래스들은 빈으로 등록이 돼있으며
각각의 aspect에서 사용하는 구현클래스를 바뀌어도 Manager의 기본 기능은 유지가 된다.
스프링 웹MVC
Spring petclinic 프로젝트는 @Controller와 @GetMapping을 사용하여 웹 MVC구현
>>>이번 강의 하나도 이해안감
'Spring > study' 카테고리의 다른 글
Spring MVC 전체 흐름 파악하기 (0) | 2019.05.31 |
---|---|
MVC 패턴에서 Service Model의 역할 (0) | 2019.05.31 |
스프링 프레임워크 입문 -AOP(Aspect Oriented Programming) (0) | 2019.05.31 |
스프링 프레임워크 입문 - IoC ( Inversion of Control ) (0) | 2019.05.30 |
JUnit Test 정리 (0) | 2019.05.30 |