PSA란?
Spring 3대 특징 중 하나인 “PSA”
스프링에서 Controller, Mapping, Transanction 이런 Annotation(어노테이션)등을 클래스나 메서드에 붙이기만 해주면 작동한다 이를 가능케 해주는게 바로 PSA 개념이다
PSA는 Portable Service Abstraction의 약자인데 여기서 핵심은 Service와 Abstraction이다
PSA 중 SA(Service Abstraction)란?
Service Abstraction 이란 추상화 계층을 사용해서 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해 주는 것을 의미한다. DB에 Transaction 처리를 할 때 Commit , RollBack같은 low level의 작업이 필요할 경우 스프링이 제공하는 @Transactional이라는 추상화 계층을 사용하면 Try, Catch, AutoCommit, Rollback 등과 같은 처리를 직접 코드로 작성할 필요 없이 Transaction을 적용할 수 있게 된다. 이제 다시 P를 붙여 PSA의 개념에서 위 예시를 적용 시 우리가 개발 초기에는 JDBC를 사용하다가 이후 JPA로 변경한다고 해서 @Transactional 사용할 수 없게 되는 것은 아니며 심지어 트랜잭션 처리에 대해서는 변경해야 하는 코드도 존재하지 않는다. 즉, JPA를 사용하던 MyBatis또는 JDBC를 사용하던 상관 없이 트랜잭션 처리를 하는데 있어서는 단순히 @Transactional 만 알고 있다면 따로 신경쓸것이 없다는 것이다.
<PSA 요약>
추상화 계층을 사용해서 어떠한 기술을 내부로 숨김 개발자에게 편의성을 제공해주는 Service Abstraction 코드를의 수정 없이 유연하게 선택 선택된 코드를 원한 곳에서 사용할 수 있도록 해주는 Spring 자체 편의 기술
'Spring' 카테고리의 다른 글
AOP란? (0) | 2022.03.20 |
---|---|
다형성(polymorphism)이란? (0) | 2022.03.19 |
접근제어자 종류와 기능 (0) | 2022.02.09 |
오버로딩(Overloading) VS 오버라이딩(Overriding) (0) | 2022.02.09 |
Java 코드의 컴파일 과정 (0) | 2022.02.08 |