Spring Framework
Spring のリモートアクセスフレームワークは、Javaプラットフォーム上で利用可能なRPCベースの各種技術についての抽象化であり、クライアント接続とサーバ間のオブジェクトのエクスポートの両方で利用できる。その中でも最重要な機能は、Inversion of Control と AOP との組合せで、それら技術のコンフィギュレーションと利用を可能な限り容易にしている点である。
このフレームワークはまた、障害リカバリ(接続障害後の自動再接続)と、クライアント側での EJB 遠隔ステートレスセッション Bean のための最適化も提供している。
Spring は以下のようなプロトコルおよび他の製品との接続をサポートしている。
HTTPベースのプロトコル Hessian: バイナリ方式のシリアライズプロトコル。オープンソース。 RMI (1): RMI 基盤を使ってメソッド呼び出しする。ただし Spring 固有の方式。 RMI (2): RMI を使ってメソッド呼び出しする。通常のRMIのインタフェースに準拠。
RMI-IIOP (CORBA): RMI-IIOP/CORBA を使ったメソッド呼び出し。
Enterprise JavaBeans クライアント接続 ローカルなEJBステートレスセッション Bean の接続: ローカルなステートレスセッション Bean と接続する。 リモートのステートレスセッション Bean の接続: リモートのステートレスセッション Bean と接続する。
SOAP Apache Axis Webサービスフレームワークとの連携。
XFire SOAPフレームワークは Spring Framework と連携し、サーバ上のオブジェクトをRPCスタイルでエクスポートする機能を提供する。
Spring のリモートアクセスフレームワークがサポートするRPCスタイルのプロトコルや製品について、クライアントもサーバも設定を Spring Core コンテナで行うことができる(Apache Axis は除く)。
代替のオープンソース実装として Cluster4Spring がある。これは一対一、一対多、動的サービス発見など、各種構成をサポートすることを意図したものである。
Spring 2.0 ではさらに AspectJ との連携を強化し、例えば en:Pointcut 言語が流用されている。
Spring AOP は Spring Framework 自体の横断的関心事に対しても機能する。コンテナを使って生成されコンフィギュレーションされた任意のオブジェクトに Spring AOP を使って質を向上させることができる。
Spring Framework はトランザクション管理、セキュリティ、リモートアクセス、JMX などの部分に Spring AOP を使っている。
バージョン2.0以降、Spring は AOP のコンフィギュレーション方法を2種類提供している。
スキーマベースの手法
@AspectJベースの注釈スタイル
Springチームは、新たなAOP関連用語を導入しないことを決めている。従って、Spring のドキュメントに出てくるAOP関連用語は、AspectJなどと同じものだけである。