SpringFramework-概要

Springは、エンタープライズJavaで最も人気のあるアプリケーション開発フレームワークです。世界中の何百万もの開発者がSpringFrameworkを使用して、パフォーマンスが高く、テストが容易で、再利用可能なコードを作成しています。

SpringフレームワークはオープンソースのJavaプラットフォームです。当初はRodJohnsonによって作成され、2003年6月にApache2.0ライセンスの下で最初にリリースされました。

サイズと透明度に関しては、Springは軽量です。Springフレームワークの基本バージョンは約2MBです。

Spring Frameworkのコア機能は、任意のJavaアプリケーションの開発に使用できますが、JavaEEプラットフォーム上にWebアプリケーションを構築するための拡張機能があります。Spring Frameworkは、POJOベースのプログラミングモデルを有効にすることで、J2EE開発を使いやすくし、優れたプログラミング手法を促進することを目標としています。

SpringFrameworkを使用する利点

以下は、SpringFrameworkを使用することのいくつかの大きな利点のリストです-

  • Springを使用すると、開発者はPOJOを使用してエンタープライズクラスのアプリケーションを開発できます。POJOのみを使用する利点は、アプリケーションサーバーなどのEJBコンテナ製品は必要ありませんが、Tomcatや一部の商用製品などの堅牢なサーブレットコンテナのみを使用するオプションがあることです。

  • 春はモジュール方式で構成されています。パッケージとクラスの数はかなりの数ですが、必要なものだけを気にし、残りは無視する必要があります。

  • Springは車輪の再発明ではなく、いくつかのORMフレームワーク、ロギングフレームワーク、JEE、Quartz、JDKタイマー、その他のビューテクノロジーなどの既存のテクノロジーのいくつかを実際に利用しています。

  • Springで記述されたアプリケーションのテストは、環境に依存するコードがこのフレームワークに移動されるため、簡単です。さらに、JavaBeanstyle POJOを使用することで、依存性注入を使用してテストデータを注入することが容易になります。

  • SpringのWebフレームワークは、適切に設計されたWeb MVCフレームワークであり、Strutsやその他の過剰に設計されたWebフレームワークやあまり人気のないWebフレームワークなどのWebフレームワークの優れた代替手段を提供します。

  • Springは、テクノロジー固有の例外(JDBC、Hibernate、またはJDOなどによってスローされる)を一貫性のある未チェックの例外に変換するための便利なAPIを提供します。

  • 軽量のIoCコンテナは、特にEJBコンテナと比較した場合、軽量になる傾向があります。これは、メモリとCPUリソースが限られているコンピューターでアプリケーションを開発および展開する場合に役立ちます。

  • Springは、(たとえば、単一のデータベースを使用して)ローカルトランザクションにスケールダウンし、(たとえば、JTAを使用して)グローバルトランザクションにスケールアップできる一貫したトランザクション管理インターフェイスを提供します。

依存性注入(DI)

Springが最もよく知られているテクノロジーは Dependency Injection (DI)制御の反転のフレーバー。ザ・Inversion of Control (IoC)は一般的な概念であり、さまざまな方法で表現できます。依存性注入は、制御の反転の具体的な例の1つにすぎません。

複雑なJavaアプリケーションを作成する場合、アプリケーションクラスは他のJavaクラスから可能な限り独立している必要があります。これにより、これらのクラスを再利用し、単体テスト中に他のクラスから独立してテストできるようになります。依存性注入は、これらのクラスを結合すると同時に、それらを独立させるのに役立ちます。

依存性注入とは正確には何ですか?これらの2つの単語を別々に見てみましょう。ここで、依存関係の部分は2つのクラス間の関連付けに変換されます。たとえば、クラスAはクラスBに依存しています。次に、2番目の部分であるインジェクションを見てみましょう。つまり、クラスBはIoCによってクラスAに注入されます。

依存性注入は、コンストラクターにパラメーターを渡す方法で、またはsetterメソッドを使用した構築後に発生する可能性があります。依存性注入はSpringFrameworkの中心であるため、この概念については、関連する例を使用して別の章で説明します。

アスペクト指向プログラミング(AOP)

Springの重要なコンポーネントの1つは Aspect Oriented Programming (AOP)フレームワーク。アプリケーションの複数のポイントにまたがる関数が呼び出されますcross-cutting concernsそして、これらの横断的関心事は、アプリケーションのビジネスロジックから概念的に分離されています。ロギング、宣言型トランザクション、セキュリティ、キャッシングなど、さまざまな側面の一般的な良い例があります。

OOPのモジュール性の主要な単位はクラスですが、AOPのモジュール性の単位はアスペクトです。DIは、アプリケーションオブジェクトを相互に分離するのに役立ち、AOPは、横断的関心事をそれらが影響するオブジェクトから分離するのに役立ちます。

Spring FrameworkのAOPモジュールは、アスペクト指向プログラミングの実装を提供します。これにより、メソッドインターセプターとポイントカットを定義して、分離する必要のある機能を実装するコードを明確に分離できます。Spring AOPの概念については、別の章で詳しく説明します。