Spring Framework
Spring Framework は、Javaプラットフォームに基づいたアプリケーションを作成しようとするJava開発者や組織が直面する課題に解決策を与える。Spring Framework は Jakarta EE だけと結びついているわけではなく、広範囲なインテグレーションが可能であり、それが広く採用されている重要な理由でもある。
Spring Framework は従来的なプログラミングモデルを使わずに、効率的に複雑なアプリケーションを作成するのに必要な機能を提供する。また、Javaプラットフォームにおいても目新しい機能をいち早く取り入れることでも知られている。
Spring Framework は、一貫したモデルを提供し、そのモデルをJavaプラットフォーム上で作成される様々なアプリケーションに適用可能にするフレームワークである。
サポートする通信プロトコルとしては RMI、CORBA、Webサービスを含むHTTPベースのプロトコル (SOAP) などがある。
設定より規約: en:Spring Roo モジュールによって、Spring ベース業務アプリケーションのRAD(開発迅速化)ソリューションを提供
バッチ処理: 大量データ処理向けのフレームワークとして次のような機能を提供:ログ取得、トランザクション管理、統計情報取得、ジョブの再起動や起動抑止、資源管理
認証・認可フレームワーク: en:Spring Securityサブプロジェクト(従前のAcegi Security System for Spring)の成果物を用い、利用者定義に従った認証・認可機能を提供。各種標準、プロトコル、ツール、手法をサポート
リモート管理フレームワーク: JMXを使ったローカルおよびリモートのJavaオブジェクトの構成管理。
メッセージフレームワーク: 標準的なJMSのAPIに対する機能拡張。利用者定義に従い、JMSのメッセージキューから透過的にメッセージ受信するためのリスナーオブジェクトを登録可能とする
テスト機能: 単体テストと結合テストを書くためのクラス群を提供
Spring Framework には自前のAOPフレームワークがあり、「アスペクト」におけるクラス間を横断するような機能(横断的関心事(英語版))のモジュール化を行う。独自のAOPフレームワークを作る動機は、設計においても実装においてもコンフィギュレーションにおいてもあまり複雑すぎない基本的AOP機能を提供できると考えたためである。Spring AOP フレームワークは Spring コンテナを最大限に利用している。
Spring AOP フレームワークは基本的に横取り方式であり、実行時にコンフィギュレーションされる。このため、コンパイル時やロード時に織り込む (weaving) 必要がない。一方、横取りではジョイントポイント(英語版)にあるオブジェクトの public または protected のメソッドしか対象にできない。
AspectJ と比較すると、Spring AOP は非力だが単純である。Spring 1.2 では AspectJ のアスペクトをコンテナ内で構成できる。