PSA란? (Portable Service Abstraction)
추상화(Abstraction)의 개념
클래스의 본질적인 특성만을 추출해서 일반화 하는 것
*설계 관점에서는 추상화 < 일반화가 더 적절!
* Java에서 코드로 추상화 방법? = 추상 클래스, 인터페이스
추상화의 예
일반적인 특성을 뽑아낸 A 클래스를 작성하고,
A 클래스를 확장받은 B, C, D 클래스는
A클래스의 일반화된 동작을 자신만의 고유한 동작으로 재구성 가능하다.
클라이언트는 B, C, D 클래스를 사용할때
객체를 자신의 타입에 할당하지 않고, A클래스 변수에 할당을 해서 접근을 한다.
⬇
추상화를 하는 이유
클라이언트(웹브라우저) 입장에서는 A클래스만 일관되게 바라보며
하위 클래스의 기능을 사용할 수 있다.
So, PSA(일관된 서비스 추상화) =
클라이언트가 추상화 된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것!
서비스에 적용하는 PSA 기법
서비스 추상화 = 추상화의 개념을 애플리케이션에서 사용하는 서비스에 적용하는 기법
ex)
JdbcConnector 인터페이스를 통해
OracleJdbcConnector, MariaDBJbcConnector, SQLiteJdbcConnector 과 간접적으로 연결됨
(= 느슨한 결합)
= 일관된 방식으로 해당 서비스의 기능 사용 가능
PSA의 장점
1. 서비스의 기능에 접근 방식 자체를 일관되게 유지 가능
2. 기술 자체를 유연하게 사용할 수 있음
PSA가 필요한 이유
= 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지!
➡ 애플리케이션에서 사용되는 기술이 변경되더라도,
최소한의 변경만으로 변경된 요구 사항 반영하기 위함
➡ 애플리케이션의 요구 사항 변경에 유연하게 대체 가능
* Spring : 트랜잭션 서비스, 메일 서비스, Spring Data 서비스 등에 PSA 적용됨
'Spring' 카테고리의 다른 글
[Spring] 스프링 컨테이너(Spring Container), 빈(Bean), 빈스코프(Bean Scope) 란? +싱글톤(Singleton) 스코프 (0) | 2022.10.13 |
---|---|
[Spring] 아키텍쳐(Architecture)란? / Spring Framework 모듈 구성 보기 (0) | 2022.10.12 |
[Spring] AOP란? (Aspect Oriented Programming) (0) | 2022.10.12 |
[Spring] IoC(Inversion of Control) / DI(Inversion of Control) 이란? (0) | 2022.10.12 |
[Spring] POJO란? (Plain Old Java Object) (0) | 2022.10.11 |
댓글