Spring PSA

PSA(Portable Service Abstraction)とは?

PSAはPortable Service Abstractionの略で、移植性の高いサービス抽象化を意味します。環境が変化しても、一貫した方法で技術にアクセスできるようにする抽象化構造です。Springで使用する外部ライブラリは、内部実装が異なっていても同じインターフェースで動作するように設計されているため、その依存関係を考慮する必要はありません。

サービス抽象化とは、特性が似ている複数の技術を抽象化し、一貫した方法で使用できるようにすることです。JDBCはその良い例です。JDBCという標準仕様があるため、DBMSがOracleでもMySQLでも同じ方法でコードを作成できます。サービス抽象化は、アダプターパターンなどのデザインパターンを適用し、複数の技術を共通インターフェースで制御できるようにします。

Springは、OXM、ORM、キャッシュ、トランザクションなど、さまざまな技術に対するPSAを提供します。

この点でSpring PSAは、拡張に対して開かれ、変更に対して閉じているというOpen-Closed Principle(OCP)の代表的な例です。