org.springframework

org.springframework

1. 前書き

Spring Frameworkは、あらゆる展開プラットフォームで実行できる最新のJavaベースのエンタープライズアプリケーション向けに、クリーンで表現力豊かなプログラミングおよび構成モデルを提供します。

この記事では、Springフレームワークの概要と、主に、依存性注入、トランザクション管理、Webアプリケーション、データアクセス、メッセージング、テストなどのサポートを提供するorg.springframeworkパッケージについて説明します。

2. 特徴

Springフレームワークは、機能の包括的なリストを提供します。

  • Spring MVC WebアプリケーションとRESTful Webサービスフレームワーク

  • Springの宣言型トランザクション管理を含むアスペクト指向プログラミング

  • 依存性注入

  • 制御の反転

そしてもっとたくさん。

3. Mavenの依存関係

SpringをMavenプロジェクトに追加する場合は、hereに関する詳細情報を見つけることができます。

4. 春のプロジェクト

このフレームワークには、さまざまなモジュールとプロジェクトが含まれています。 構成からセキュリティ、Webアプリ、ビッグデータに至るまで、アプリケーションのインフラストラクチャのニーズに関係なく、その構築を支援するSpringプロジェクトがあります。

小さく始めて、必要なものだけを使用します。Springは設計上モジュール式です。 ここでそれらのプロジェクトのいくつかを見てみましょう。

4.1. Spring Web MVC

Web MVCフレームワークは、すべてのHTTP要求と応答を処理し、アプリケーションを疎結合にするDispatcherServletを中心に設計されたModel-View-Controllerアーキテクチャーを提供します。

それについての最もよいことは、コマンドまたはフォームオブジェクトとして任意のオブジェクトを使用できることです。フレームワーク固有のインターフェイスまたは基本クラスを実装する必要はありません。 そのデータバインディングは非常に柔軟です。たとえば、型の不一致をシステムエラーとしてではなく、アプリケーションで評価できる検証エラーとして扱います。

ここで完全なguideを見つけることができます。

4.2. SpringIOプラットフォーム

IO Platformは、Javaプロジェクトに含めることができる一連の依存関係(両方ともSpring Frameworkの依存関係)を定義して、バージョン間の互換性を気にせずに必要な依存関係を選択できるようにします(Spring IOがそれを保証するため) )。

IOプラットフォームは、Java 7および8で動作することが認定されています。

the GitHub projectを見てください。

4.3. 春のブーツ

Spring Bootを使用すると、「実行するだけ」のスタンドアロンの本番環境グレードのSpringベースのアプリケーションを簡単に作成できます。 これにより、最小限の作業でSpringベースのアプリケーションを非常に簡単に作成できます。

それを使用して作成されたアプリケーションは、大部分が適切なデフォルトで自動設定され、その隣にメトリック(リクエストの数、リクエストにかかった時間など)で改善できます。

いくつかの(オプションの)モジュールで構成されます。

  1. CLI – SpringBootで作成されたアプリケーションを開始/停止するためのGroovyに基づくコマンドラインインターフェイス。

  2. Boot Core –他のモジュールのベース。

  3. Auto-configure –さまざまなSpringプロジェクトを自動構成するためのモジュール。 特定のフレームワーク(Spring Batch、Spring Data JPA、Hibernate、JDBC)の可用性を検出します。

  4. Actuator –このプロジェクトを追加すると、特定のエンタープライズ機能(セキュリティ、メトリック、デフォルトのエラーページ)がアプリケーションで有効になります。

  5. Starters –MavenまたはGradleビルドファイルに依存関係として含めるさまざまなクイックスタートプロジェクト。 そのタイプのアプリケーションに必要な依存関係があります。 現在、Webプロジェクト(tomcatおよびjettyベース)の初期プロジェクト、Spring Batch、Spring Data JPA、Spring Integration、Spring Securityがあります。

  6. Tools – MavenおよびGradleビルドツールとカスタムSpringBoot Loader(単一の実行可能jar / warで使用)がこのプロジェクトに含まれています。

Mavenアーティファクトhereを見つけて、the GitHub projectを確認できます。

4.4. 春のデータ

Spring Dataの使命は、基盤となるデータストアの特別な特性を維持しながら、データアクセス用の使い慣れた一貫性のあるSpringベースのプログラミングモデルを提供することです。

このプロジェクトの主な目標は、非リレーショナルデータベース、map-reduceフレームワーク、クラウドベースのデータサービスなどの新しいデータアクセステクノロジーを使用するSpringベースのアプリケーションの構築を容易にし、リレーショナルデータベーステクノロジーのサポートを改善することです。 。

これは、特定のデータベースに固有の多くのサブプロジェクト(JPAMongoDBRedisApache SolrGemfireなど)を含む包括的なプロジェクトです。 Apache Cassandra)。 プロジェクトは、これらのエキサイティングなテクノロジーの背後にいる多くの企業や開発者と協力して開発されています。

4.5. 春のセキュリティ

Spring Securityは、Javaアプリケーションに認証と承認の両方を提供することに焦点を当てたフレームワークです。 すべてのSpringプロジェクトと同様に、Spring Securityの真の力は、カスタム要件に合わせて簡単に拡張できることにあります。 Apache 2.0 licenseでリリースされるため、プロジェクトで自信を持って使用できます。

また、学習、展開、管理も簡単です。 ほとんどの一般的な操作にディレクティブを提供する専用のセキュリティネームスペースがあり、わずか数行のXMLで完全なアプリケーションセキュリティを可能にし、セッション固定、クリックジャック、クロスサイトリクエストフォージェリなどの攻撃からアプリを保護できます。

Spring Securityは、Spring Web Flow、Spring Web Services、Pivo​​tal tc Serverなど、他の多くのSpringテクノロジーとも統合されています。

SpringセキュリティのFAQsを見て、より深い洞察とMavenの依存関係ページを確認してください。 また、AuthenticationRegistration、およびsetupのSpringセキュリティチュートリアルをご覧ください。Maven.を使用したSpringセキュリティ

4.6. 春のソーシャル

Spring Socialは、アプリケーションがTwitter、Facebook、その他のOAuth認証ベースのAPIなどのSoftware-as-a-Serviceプロバイダーに接続できるようにするフレームワークの拡張です。 Webベースのアプリケーションにすぐに使用できるOAuth認証フレームワークを提供します。

特徴:

  • ローカルユーザーアカウントをホストプロバイダーアカウントに接続するプロセスを大幅に簡素化する、拡張可能なサービスプロバイダーフレームワーク。

  • Java / Spring Webアプリケーション、サービスプロバイダー、およびユーザー間の認証フローを処理する接続コントローラー。

  • Facebook、Twitter、LinkedIn、TripIt、GitHubなどの一般的なサービスプロバイダーAPIへのJavaバインディング。

  • ユーザーがサービスプロバイダーを介してサインインすることで、アプリケーションで認証できるようにするサインインコントローラー。

入門ガイド:

Springには、すばやく開始できるようにGitHubプロジェクトの例が多数用意されており、quick startページでもSpring Social referenceが便利です。

4.7. スプリングシェル

Spring Shellは、Springベースのプログラミングモデルを使用してコマンドで簡単に拡張できるインタラクティブシェルです。

シェルプロジェクトのユーザーは、Spring Shell jarに依存し、独自のコマンド(Spring Beanのメソッドとして提供される)を追加することで、フル機能のシェル(akaコマンドライン)アプリケーションを簡単に構築できます。 コマンドラインアプリケーションの作成は、プロジェクトのREST APIとやり取りしたり、ローカルファイルのコンテンツを操作したりするのに役立ちます。

The GitHub projectはここにあります。

4.8. 春のモバイル

Spring Mobileはフレームワークの拡張であり、Spring Web MVCはモバイルWebアプリケーションの開発を簡素化することを目的としています。

Spring Mobileは、Spring Webサイトへのリクエストを行っているデバイスのタイプを検出し、そのデバイスに基づいて代替ビューを提供する機能を提供するフレームワークです。 すべてのSpringプロジェクトと同様に、Spring Mobileの真の力は、どれだけ簡単に拡張できるかにあります。 特徴:

  • モバイルおよびタブレットデバイスのサーバー側検出のためのデバイスリゾルバーの抽象化

  • ユーザーが「通常」、「モバイル」、または「タブレット」のいずれのエクスペリエンスを好むかをユーザーが指定できるサイト設定管理

  • ユーザーのデバイスに基づいてユーザーを最適なサイト(モバイル、タブレット、または通常)に切り替え、オプションでサイト設定を指定できるサイトスイッチャー

  • 特定のデバイスのさまざまなビューを整理および管理するためのデバイス対応ビュー管理。

このsample applicationは、すぐに開始できます。

Spring MVCを使用して、detect a devicewebsite preferenceの処理、またはモバイルWebコンテンツの提供を行うこともできます。

4.9. 春のバッチ

Spring Batchは、エンタープライズシステムの日常業務に不可欠なバッチアプリケーションの開発を可能にすることを目的とした、軽量で包括的なフレームワークです。

このコンテキストでのバッチアプリケーションとは、バルクデータ処理を対象とした自動化されたオフラインシステムを指します。 Spring Batchはこの基本的なバッチの繰り返しを自動化し、通常はユーザーの操作なしでオフライン環境で同様のトランザクションをセットとして処理する機能を提供します。

Spring Batchは、設定可能なチャンクサイズのデータ​​をデータソースから読み取り、処理し、最終的にリソースに書き込むことで機能します。

リーダーのデータソースは、フラットファイル(テキストファイル、XMLファイル、CSVファイル…)、リレーショナルデータベース(MySQL…)、MongoDBです。 同様に、ライターはフラットファイル、リレーショナルデータベース、MongoDB、メーラーなどにデータを書き込むことができます。

Creating a Batch Serviceおよび他のSpringバッチresourcesですばやく開始します。

5. コアスプリングパッケージ

ここでは、Springのコアパッケージを見てみましょう。

  • org.springframework.cache –このパッケージは、宣言型キャッシュ管理用のサブパッケージとクラスをサポートし、Caffeineライブラリにオープンソースキャッシュを設定し、オープンソースキャッシュEhCache 2.x用のクラスをサポートします。

  • org.springframework.context –このパッケージはbeansパッケージに基づいて構築され、メッセージソースとオブザーバーデザインパターンのサポート、およびアプリケーションオブジェクトが一貫したAPIを使用してリソースを取得する機能を追加します。

  • org.springframework.core –例外処理とバージョン検出のための基本クラス、およびフレームワークのどの部分にも固有ではないその他のコアヘルパーを提供します。

  • org.springframework.expression –このパッケージは、Spring Expression Languageの背後にあるコア抽象化を提供します。

  • org.springframework.http –このパッケージには、クライアント/サーバー側のHTTPに関する基本的な抽象化が含まれています。

  • org.springframework.jdbc –このパッケージのクラスにより、JDBCが使いやすくなり、一般的なエラーの可能性が低くなります。

  • org.springframework.jms –このパッケージにはJMSの統合クラスが含まれており、SpringスタイルのJMSアクセスが可能です。

  • org.springframework.jndi –このパッケージのクラスは、JNDIを使いやすくし、JNDIに格納されている構成へのアクセスを容易にし、JNDIアクセスクラスに役立つスーパークラスを提供します。

  • org.springframework.orm.hibernate5Hibernate 5.xとSpringの概念の統合を提供するパッケージ。

  • org.springframework.test.util –ユニットテストおよび統合テストで使用する一般的なユーティリティクラス。

このリストは限られており、Springフレームワークのコアパッケージのみを説明しています。 完全なリストhereを見つけることができます。

6. 結論

この簡単な概要記事では、Springエコシステムに存在するさまざまなプロジェクトを見て、Maven依存関係の豊富なコレクション、GitHubプロジェクト、および各プロジェクトが提供する包括的な機能を使用して、Webアプリを安全でスケーラブルで簡単に作成できるようにしました一緒に暮らします。

また、アプリの論理的な側面に集中するためのパワーを提供するコアパッケージも確認しました。