본문 바로가기
Spring/study

스프링 프레임워크 입문 -PSA(Portable Service Abstraction)

by avvin 2019. 5. 31.

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구현  


>>>이번 강의 하나도 이해안감