개발 일지/Spring

[Spring] PSA

미숫가루설탕많이 2023. 2. 2. 17:31

 PSA(Portable Service Abstraction)란, 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하려는 추상화 구조이다.

 

 객체지향 프로그래밍에서 어떤 클래스의 본질적인 특성만을 추출해서 일반화하는 것을 추상화(Abstraction)이라고 하며, 추상화된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것이 바로 일관된 추상화(PSA)의 기본 개념이다. 이는 Spring에서 동작할 수 있는 라이브러리들은 POJO 원칙을 지키게끔 PSA 형태의 추상화가 되어있음을 의미한다.

 

 PSA가 필요한 주된 이유는 어떤 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지함으로써 애플리케이션에서 사용하는 기술이 변경되더라도 최소한의 변경만으로 변경된 요구 사항을 반경하기 위함이다.

 

 "잘 만든 인터페이스 하나가 열 클래스 부럽지 않다"는 말이 있다. 여기서 '잘 만든 인터페이스'는 PSA이며 PSA가 적용된 코드라면 내 코드가 바뀌지 않고 다른 기술로 간편하게 바꿀 수도 있으며, 기술에 특화되어 있지 않은 코드이다.

 

 Spring은 상황에 따라 기술이 바뀌더라도 변경된 기술에 일관된 방식으로 접근할 수 있는 PSA를 적극 지원하고 있다.

 

 Spring이 제공하는 PSA로는 Spring Web MVC, Spring Transaction, Spring Cache 등이 있으며, 적용된 분야로는 트랜잭션 서비스, 메일 서비스, Spring Data 서비스 등이 있다.

'개발 일지 > Spring' 카테고리의 다른 글

[Spring] 스프링 컨테이너  (0) 2023.02.06
[Spring] Spring Boot  (0) 2023.02.03
[Spring] AOP  (0) 2023.02.02
[Spring] IoC / DI  (0) 2023.02.02
[Spring] POJO  (0) 2023.02.02