1. PSA(Portable Service Abstraction)
1) Pablo Picasso 의 추상화 기법
- 파블로 피카소의 작품 'The Bull is a series of eleven lithographs created' 이다
- 다국적 기업인 Apple의 업무 프로세스에 기본이 되는 그림이기도 하다
- 황소의 특성을 살려 본질만을 남기려 한 작품이다
- 객체지향 프로그램밍에서는 클래스의 본질적인 특성만을 추출해서 일반화하는 작업을 추상화(Abstraction)라고 한다
- Java에서 추상화를 표현할 수 있는 방법에는 추상 클래스와 인터페이스가 있다
2) 일반화(추상화)의 예
- 어린 아이의 특성을 일반화하여 코드로 작성해 보면 아래와 같다
- 위의 추상 클래스에 구체적인 메서드를 작성해 본다
- Child 클래스를 실행시켜 본다
- 클라이언트(ChildManageApplication 클래스의 main() 메서드)는
- NewBornBaby, Infant, Toddler 를 사용할 때 구체화 클래스의 객체를 자신의 타입에 할당하지 않고, (1) ~ (3)과 같이 Child 클래스 변수에 할당을 해서 접근을 한다
- 클라이언트는 Child라는 추상클래스만 찾아서 하위의 기능 클래스를 사용할 수 있다
- 클라이언트가 추상황 된 상위클래스만을 일관되게 바라보며 하위 클래스의 기능을 사용할 수 있는 것이 일관된 서비스 추상화이며, PSA의 기본 개념이다
※ 서버를 이용하는 클라이언트 외에 코드 내에서 어떤 클래스의 기능을 사용하는 측을 클라이언트라고 부른다
2. 서비스에 적용하는 일관된 서비스 추상화 (PSA)기법
- 서비스 추상화는 추상화의 개념을 애플리케이션에 자용하는 서비스에 적용하는 기법이다
- DbClient에서 어떤 JdbcConnector 구현체를 사용하더라도 Connection을 얻는 방식은 getConnection() 메서드를 사용해야 하기 때문에 동일하다
- 일관된 방식으로 서비스의 기능을 사용할 수 있다 - 애플리케이션에서 특정 서비스를 이용할 때, 서비스의 기능을 접근하는 방식 자체를 일관되게 유지하면서 기술 자체를 유연하게 사용할 수 있도록 하는 것을 PSA(일관된 서비스 추상화)라고 한다
1) PSA(일관된 서비스 추상화) 코드 예제
- DbClient 클래스의 (1)에서 SQLiteJdbcConnector 구현체의 객체를 생성해서 JdbcConnector 인터페이스 타입의 변수에 할당(업캐스팅)하고 있다
- DbClient 클래스의 (2)에서 실제로 데이터를 데이터베이스에 저장하는 기능을 하는 DataProcessor 클래스의 생성자로 JdbcConnector 객체를 전달하고 있다(의존성 주입).
- 상기와 같이 작성 후 실행을 시키면 error가 발생한다
- JdbcConnector 메서드에 아래 코드를 삽입시켜 부면 해결된다
import java.sql.Connection;
- 에러없이 실행된다
- 다른 애플리케이션에서 SQLite 데이터베이스를 사용하는 것이 아니라 Oracle 데이터베이스를 사용해야 한다면, JdbcConnector 서비스 모듈을 그대로 가져와서 (1)의 new SQLiteJdbcConnector()를 new OracleJdbcConnector()로 바꿔서 사용하면 된다
3. PSA 필요성
- 어떤 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지하여 애플리케이션에서 사용하는 기술의 변경 시 최소 작업을 통해 변경 사항을 반영한다
- PSA를 통해서 애플리케이션의 요구 사항 변경에 유연하게 대처할 수 있다
- PSA는 트랜잭션 서비스, 메일 서비스, Spring Data 서비스 등에 적용된다
'Spring Framework' 카테고리의 다른 글
Spring Framework - Architecture (0) | 2022.06.26 |
---|---|
Spring Framework - AOP (0) | 2022.06.22 |
Spring Framework - DI - Spring Container (0) | 2022.06.19 |
Spring Framework - IoC / DI - 기초 (0) | 2022.06.17 |
Spring Framework 특징 (0) | 2022.06.15 |