Spring フレームワークの紹介
Spring は、コンテナを使用してアプリケーションのさまざまなコンポーネントを作成および管理する Java フレームワークです。コンテナー (多くの場合、Spring アプリケーション コンテキストと呼ばれます) は、依存性注入 (DI) 設計パターンを使用して、アプリケーション内のさまざまなコンポーネントを接続します。DI を使用すると、依存クラス内でオブジェクトの新しいインスタンスを作成せずに、依存クラスでオブジェクトを使用できます。
そのため、各コンポーネントが依存するコンポーネントの新しいインスタンスを作成できるようにするのではなく、Spring のコンテナーは、ホストする各コンポーネントのインスタンスを作成して維持します。次に、このコンテナーは、コンポーネントのインスタンスを、それを必要とする他のすべてのコンポーネントに注入します。
Spring のコア機能の探索
Spring フレームワークには、アプリケーションを作成および管理する能力において不可欠な役割を果たす、よく組織された約 20 のモジュールがあります。これらのモジュールの主な機能に基づいて、次の 5 つのカテゴリに分類できます。
- コアコンテナ
- データ アクセス/統合
- ウェブ
- アスペクト指向のプログラミングと計測
- テスト
春のコンテナ
Spring はコンテナーを使用して、アプリケーションのさまざまなコンポーネント (Bean と呼ばれます) を作成および管理します。コンテナーには、Spring の ApplicationContext インターフェースを介してアクセスできます。これにより、オブジェクト (または Bean) をインスタンス化、構成、および組み立てることができます。Spring のコンテナーは、構成メタデータの助けを借りてその機能を実行できます。
この構成メタデータにはいくつかの異なる形式がありますが、その典型的な形式は XML です。Bean に加えて、Spring のコンテナーもコア、コンテキスト、および式モジュールで構成されます。
Spring データ アクセス/統合
Spring フレームワークのデータ アクセス/統合の側面は、JDBC、ORM、OXM、JMS、およびトランザクションのいくつかのサブモジュールで構成されています。これらのモジュールは連携して、アプリケーションが使用するデータを管理します。
春のウェブ
Spring アプリケーションの Web 機能は、アプリケーションに Web 指向の統合を提供します。Web 指向の統合に加えて、Spring は Web サーブレット モジュールを提供します。Web サーブレット モジュールは、Spring のモデル ビュー コントローラー (MVC) の実装を担当します。
Spring アスペクト指向プログラミング (AOP)
Spring の AOP フレームワークは、Spring のもう 1 つの重要なコンポーネントです。AOP フレームワークは Spring のコンテナー機能にとって重要ではありませんが、有能なミドルウェア ソリューションとしてコンテナーを補完します。AOP フレームワークの重要な機能の 1 つは、アプリケーションに宣言型エンタープライズ サービス、つまり宣言トランザクション管理を提供することです。
宣言型トランザクション管理は、アプリケーション コードへの影響が最小限であるため、ソフトウェア開発に望ましいアプローチです。
スプリングテスト
Spring は、アプリケーションのテストを非常に重要視しています。そのテスト モジュールは、JUnit または TestNG を使用した統合テストと単体テストをサポートしています。
Spring アプリケーションの作成
新しい Spring アプリケーションのボイラープレートを作成するには、いくつかの方法があります。さまざまなアプローチには次のものがあります。
- Spring の公式 Web サイトの Web アプリケーション (または Spring Initializr) から。
- プロジェクトのディレクトリ構造とビルド仕様を手動で作成します。
- Spring Tool Suite を使用。
- Spring Boot コマンドライン インターフェイスを使用したコマンドラインから。
- Eclipse IDE を使用。
- IntelliJ IDEA IDE を使用。
最も一般的なアプローチは、Spring Initializr です。
上の画像からわかるように、いくつかの決定を下す必要があります。1 つ目は、初期化するプロジェクトのタイプです。Spring には、Groovy 用の Gradle、Kotlin 用の Gradle、または Maven の 3 つのオプションがあります。このサンプル アプリケーションでは、Maven プロジェクトを使用します。
選択する必要があるその他のオプションは、言語 (Java)、使用する Spring Boot のバージョン、およびプロジェクト メタデータです。Spring の 5 つのフィールドには、サンプル アプリケーションの作成に役立つダミー データが既に含まれています。ただし、このメタデータは Spring Bean とそのメソッドを含む Spring アプリケーションを記述するため、これらのフィールドをプロジェクト固有のデータで更新する必要があります。
次に、ファイルを入れるパッケージ (jar または war) を選択する必要があります。次に、デバイスにある Java のバージョンを選択できます。最終的に決定する必要があるのは、アプリケーションに必要な依存関係の種類です。
Spring は、アプリケーションにプロパティを追加するために使用できるいくつかの依存関係を提供します。アプリケーションに新しい依存関係を追加するには、Spring Initializr の右側にある [依存関係の追加] ボタンをクリックするだけです。この操作により、画面に次のオーバーレイが生成されます。
このサンプル アプリケーションで必要な唯一の依存関係は、Spring Web です。この依存関係により、MVC アーキテクチャを使用して Web アプリケーションを構築できます。アプリケーションで使用するすべての依存関係を選択したら、[生成] をクリックします。これにより、プロジェクトのボイラープレートがダウンロードされます。
これで、Spring Boot (Spring のライブラリの 1 つ) プロジェクトができました。最後のステップは、プロジェクトを好みの IDE にインポートすることです。Spring プロジェクトには、次のプロジェクト構造があります。
これは通常の Maven プロジェクト構造であり、理解する必要のある重要なファイルがいくつかあります。
- Pom.xml: これには、Spring アプリケーション構成データが含まれています。
- OnlineShopaholicsApplication.java: これは、アプリケーションを実行する Spring Boot メイン クラスです。
- OnlineShopaholicsApplicationTest.java: これは、Spring アプリケーション コンテキスト (またはコンテナー) が正しく読み込まれることを保証する JUnit テスト クラスです。
Spring アプリケーションの実行
Spring のブートストラップ クラス (この場合は OnlineShopaholicsApplication クラス) には、次の初期コードがあります。
package com.onlineshopaholics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class OnlineShopaholicsApplication {
public static void main(String[] args) {
SpringApplication.run(OnlineShopaholicsApplication.class, args);
}
}
上記のコードの最も重要な側面の 1 つは@SpringBootApplicationアノテーションです。これは、アプリケーションが他の 3 つのアノテーションの機能にアクセスできるようにする複合アノテーションです。
- @EnableAutoconfiguration: このアノテーションは、Spring Boot の自動構成を有効にします。これは、Spring ブートに、アプリケーションが機能する必要があると思われるコンポーネントを構成するように指示することを意味します。
- @ComponentScan: このアノテーションを使用すると、コンポーネントのスキャンを有効にできます。この機能は重要です。これにより、Spring は、Spring アプリケーション コンテキスト (またはコンテナー) で使用するために、他の注釈付きコンポーネントを自動的に検出して登録できます。
- @SpringBootConfiguration: これは @Configuration アノテーションの特殊な形式であり、Spring アプリケーションコンテキストで Bean (またはオブジェクト) を登録できます。
上記のコードのもう 1 つの重要な側面は、アプリケーションを実行するmain()メソッドです。ここでアプリケーションを実行すると、サーバーが起動するだけです。そのため、アプリケーションにさらに機能を追加する場合は、コードを更新する必要があります。
package com.onlineshopaholics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class OnlineShopaholicsApplication {
public static void main(String[] args) {
SpringApplication.run(OnlineShopaholicsApplication.class, args);
}
@GetMapping("/customer")
public String Welcome(@RequestParam(value = "name", defaultValue = "Customer") String name) {
return String.format("Welcome %s!", name);
}
}
Spring Boot アプリケーションに 3 つの新しいアノテーションが追加されました。
- @RestController: このアノテーションはクラスをコントローラーとしてマークするため、上記のクラスのすべてのメソッド (main() を除く) は、ビューではなくドメイン オブジェクトを返します。
- @GetMapping: このアノテーションは、HTTP GET リクエストを特定のヘッダー メソッドにマップします。したがって、ブラウザで「/customer」のリクエストを作成するたびに、Welcome() メソッドは文字列値を返すことでリクエストを処理します。
- @RequestParam: このアノテーションは、メソッド パラメーターを Web 要求パラメーターにバインドする必要があることを示します。
更新されたコードにより、Spring OnlineShopaholicsApplicationには、ブラウザーで表示できる顧客ページが含まれるようになりました。アプリケーションを実行すると、サーバーが起動し、コンソールに出力が生成されます。
出力には多くの重要な情報があります。サーバーが実行中であること、初期化プロセスにかかった時間、およびアプリケーションが実行されているポート (デフォルトでは 8080) が示されます。したがって、http://localhost:8080/customerに移動すると、ブラウザーに次の出力が表示されます。
アプリケーション ビューを設計できるようになりました
プロジェクト構造で気付くかもしれないもう 1 つの重要なファイルは、templatesフォルダーです。理想的には、OnlineShopaholicsApplicationクラスは、さまざまなビューの要求を処理するコントローラーとして機能する必要があります。したがって、完全なアプリケーションでは、コントローラー クラスに、その要求のビューに表示されるテキストを含めないでください。
代わりに、HTML を使用してテンプレート ファイルを作成し、Spring アプリケーションの templates フォルダー内に配置する必要があります。
コメントを残す