티스토리 뷰

반응형

스프링의 세가지 핵심인 IoC/DI , AOP , 그리고 PSA 중 PSA에 알아보고자 한다

 

스프링에서 Controller, Mapping, Trasanction 이런 Annotation(어노테이션)등을 클래스나 메서드에 붙이기만 해주면 작동한다

이를 가능케 해주는게 바로 PSA 개념이다

 

PSA는 Portable Service Abstraction의 약자인데 여기서 핵심은 Service와 Abstraction이다

서비스 추상화라고 불리는데 이는 추상화 계층을 사용하여 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공하는 것을 말한다

 

Service Abstraction (서비스 추상화)

스프링이 제공하는 서비스 추상화는 많지만 Spring Web MVC와 JDBC를 예로 들어보겠다

 

1. Spring Web MVC

클래스에 @Controller 어노테이션을 사용하면 메서드들의 Mapping 정보를 읽을 수 있게 만들어 준다

이를 구동하게 해주는 것이 내장된 Tomcat이라고 가정해보자

이때 개발자가 전혀 다른 기술 스택인 WebFlux라는 기술로 이를 구동할 시 개발자가 직접 접근하여 구현할 필요 없이

Spring Web MVC의 추상화 계층을 사용하여 Netty라는 WAS로 구동을 할 수 있다

 

2. JDBC

본인은 이 예시가 좀 더 이해하기 쉬웠다

우리가 DB에 접근할때 JDBC라는 것을 사용하면 Oracle 또는 MySQL 둘 중 아무거나 사용하더라도 접근을 할 수 있다

 

이 처럼 같은 일을 하는 다수의 기술(Tomcat or Netty 또는 Oracle or MySQL)을 공통의 인터페이스로 제어할 수 있게 한 것을 서비스 추상화라고 한다

 

더보기

개인 학습을 위해 작성되는 글입니다.

제가 잘못 알고 있는 점에 대한 지적 / 더 나은 방향에 대한 댓글을 환영합니다.

 

참조 링크:

https://atoz-develop.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-PSA

 

참조 서적:

스프링 입문을 위한 자바 객체지향의 원리와 이해 - 김종민 저

 

반응형
댓글