org.springframework
1. 序章
Spring Frameworkは、任意のデプロイメントプラットフォームで実行できる最新のJavaベースのエンタープライズアプリケーションに、クリーンで表現力豊かなプログラミングおよび構成モデルを提供します。
この記事では、Springフレームワークの概要と、主に、依存性注入、トランザクション管理、Webアプリケーション、データアクセス、メッセージング、テストなどのサポートを提供するorg.springframeworkパッケージについて説明します。
2. 特徴
Spring Frameworkは、機能の包括的なリストを提供します。
- SpringMVCWebアプリケーションとRESTfulWebサービスフレームワーク
- Springの宣言型トランザクション管理を含むアスペクト指向プログラミング
- 依存性注入
- 制御の反転
とはるかに。
3. Mavenの依存関係
SpringをMavenプロジェクトに追加する場合は、ここで詳細を確認できます。
4. 春のプロジェクト
フレームワークには、さまざまなモジュールとプロジェクトが含まれています。 構成からセキュリティ、Webアプリからビッグデータまで、アプリケーションのインフラストラクチャのニーズが何であれ、アプリケーションの構築を支援するSpringプロジェクトがあります。
小さく始めて、必要なものだけを使用してください–Springは設計上モジュール式です。 ここでそれらのプロジェクトのいくつかを見てみましょう。
4.1. Spring Web MVC
Web MVC フレームワークは、すべてのHTTP要求と応答を処理し、アプリケーションを緩く結合するDispatcherServletを中心に設計されたModel-View-Controllerアーキテクチャを提供します。
それについての最もよいことは、コマンドまたはフォームオブジェクトとして任意のオブジェクトを使用できることです。フレームワーク固有のインターフェイスまたは基本クラスを実装する必要はありません。 そのデータバインディングは非常に柔軟性があります。たとえば、タイプの不一致は、システムエラーとしてではなく、アプリケーションで評価できる検証エラーとして扱われます。
ここに完全なガイドがあります。
4.2. SpringIOプラットフォーム
IOプラットフォームは、Javaプロジェクトに含めることができる一連の依存関係(両方ともサードパーティライブラリとしてのSpring Framework依存関係)を定義し、バージョン間の互換性を気にせずに必要な依存関係を選択できるようにします(Springのため) IOはそれを保証します)。
IOプラットフォームは、Java7および8で動作することが認定されています。
GitHubプロジェクトをご覧ください。
4.3. スプリングブーツ
Spring Boot を使用すると、「実行するだけ」のスタンドアロンの製品グレードのSpringベースのアプリケーションを簡単に作成できます。 これにより、最小限の作業でSpringを利用したアプリケーションを非常に簡単に作成できます。
それを使用して作成されたアプリケーションは、いくつかの適切なデフォルトを使用して大部分を自動構成でき、その次にメトリック(要求の数、要求にかかった時間など)を使用して改善できます。
これは、いくつかの(オプションの)モジュールで構成されています。
- CLI –Groovyに基づくコマンドラインインターフェイス。スプリングブートで作成されたアプリケーションを開始/停止します。
- ブートコア–他のモジュールのベース。
- Auto-configure –さまざまなSpringプロジェクトを自動構成するためのモジュール。 特定のフレームワーク(Spring Batch、Spring Data JPA、Hibernate、JDBC)の可用性を検出します。
- アクチュエータ–このプロジェクトを追加すると、アプリケーションで特定のエンタープライズ機能(セキュリティ、メトリック、デフォルトのエラーページ)が有効になります。
- Starters –MavenまたはGradleビルドファイルに依存関係として含めるさまざまなクイックスタートプロジェクト。 そのタイプのアプリケーションに必要な依存関係があります。 現在、Webプロジェクト(TomcatおよびJettyベース)のスタータープロジェクトがあり、Spring Batch、Spring Data JPA、Spring Integration、SpringSecurityが存在します。
- ツール–MavenおよびGradleビルドツールとカスタムSpringBootLoader(単一の実行可能jar / warで使用)がこのプロジェクトに含まれています。
Mavenアーティファクトここを見つけて、GitHubプロジェクトを見ることができます。
4.4. 春のデータ
Spring Data の使命は、基盤となるデータストアの特別な特性を維持しながら、データアクセス用の使い慣れた一貫性のあるSpringベースのプログラミングモデルを提供することです。
このプロジェクトの主な目標は、非リレーショナルデータベース、map-reduceフレームワーク、クラウドベースのデータサービスなどの新しいデータアクセステクノロジーを使用するSpringを利用したアプリケーションの構築を容易にし、リレーショナルデータベーステクノロジーのサポートを改善することです。 。
これは、特定のデータベースに固有の多くのサブプロジェクトを含む包括的なプロジェクトです( JPA 、 MongoDB 、 Redis 、
4.5. 春のセキュリティ
Spring Security は、Javaアプリケーションに認証と承認の両方を提供することに焦点を当てたフレームワークです。 すべてのSpringプロジェクトと同様に、Spring Securityの真の力は、カスタム要件を満たすために簡単に拡張できることにあります。 Apache 2.0ライセンスでリリースされているため、プロジェクトで自信を持って使用できます。
また、学習、展開、および管理も簡単です。 専用のセキュリティ名前空間があり、ほとんどの一般的な操作にディレクティブを提供し、わずか数行のXMLで完全なアプリケーションセキュリティを可能にし、セッション固定、クリックジャッキング、クロスサイトリクエストフォージェリなどの攻撃からアプリを保護できます。
Spring Securityは、Spring Web Flow、Spring Web Services、PivotaltcServerなどの他の多くのSpringテクノロジーとも統合されています。
SpringセキュリティのFAQを参照して、より深い洞察とMaven依存関係ページを確認してください。 また、認証、登録、およびセットアップ Spring Security withMavenの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 プロジェクトのかなりの数の例が用意されており、すばやく開始できます。 Spring Social reference は、 quickstartページでも便利です。
4.7. スプリングシェル
Spring Shell は、Springベースのプログラミングモデルを使用してコマンドで簡単に拡張できるインタラクティブシェルです。
シェルプロジェクトのユーザーは、Spring Shell jarに依存し、独自のコマンド(Spring Beanのメソッドとして提供される)を追加することで、フル機能のシェル( aka コマンドライン)アプリケーションを簡単に構築できます。 コマンドラインアプリケーションの作成は、プロジェクトのREST APIとやり取りしたり、ローカルファイルのコンテンツを操作したりするのに便利ですeg。
GitHubプロジェクトはここにあります。
4.8. 春のモバイル
Spring Mobile は、フレームワークの拡張であり、 Spring Web MVC は、モバイルWebアプリケーションの開発を簡素化することを目的としています。
Spring Mobileは、Spring Webサイトにリクエストを送信しているデバイスのタイプを検出し、そのデバイスに基づいて代替ビューを提供する機能を提供するフレームワークです。 すべてのSpringプロジェクトと同様に、Spring Mobileの真の力は、拡張がいかに簡単であるかにあります。 特徴:
- モバイルおよびタブレットデバイスのサーバー側検出のためのデバイスリゾルバーの抽象化
- ユーザーが「通常」、「モバイル」、「タブレット」のいずれのエクスペリエンスを好むかをユーザーが示すことができるサイト設定管理
- ユーザーのデバイスに基づいて、モバイル、タブレット、または通常の最も適切なサイトにユーザーを切り替えることができ、オプションでサイトの好みを示すことができるサイトスイッチャー
- 特定のデバイスのさまざまなビューを整理および管理するためのデバイス対応ビュー管理。
このサンプルアプリケーションを使用すると、すぐに使い始めることができます。
また、デバイスの検出、 Webサイト設定の処理、またはSpringMVCを使用したモバイルWebコンテンツの提供も可能です。
4.9. 春のバッチ
Spring Batch は、エンタープライズシステムの日常業務に不可欠なバッチアプリケーションの開発を可能にすることを目的とした、軽量で包括的なフレームワークです。
このコンテキストでのバッチアプリケーションとは、バルクデータ処理を対象とした自動オフラインシステムを指します。 Spring Batchは、この基本的なバッチ反復を自動化し、通常はユーザーの操作なしでオフライン環境で同様のトランザクションをセットとして処理する機能を提供します。
Spring Batchは、データソースから構成可能なチャンクサイズのデータを読み取り、処理して、最後にリソースに書き込むことで機能します。
リーダーのデータソースは、フラットファイル(テキストファイル、XMLファイル、CSVファイル…)、リレーショナルデータベース(MySQL…)、MongoDBです。 同様に、ライターはフラットファイル、リレーショナルデータベース、MongoDB、メーラーなどにデータを書き込むことができます。
Batch Serviceの作成および他のSpringバッチリソースを使用して、すぐに始めてください。
5. コアスプリングパッケージ
ここでは、コアSpringパッケージを見てみましょう。
-
org.springframework.cache –このパッケージは、宣言型キャッシュ管理用のサブパッケージとクラスをサポートし、 Cafeine ライブラリにオープンソースキャッシュを設定し、オープンソースキャッシュのクラスをサポートします。 EhCache2.x。
-
org.springframework.context –このパッケージはbeansパッケージに基づいて構築されており、メッセージソースとオブザーバーデザインパターンのサポート、およびアプリケーションオブジェクトが一貫したAPIを使用してリソースを取得する機能を追加します。
-
org.springframework.core –例外処理とバージョン検出のための基本クラス、およびフレームワークのどの部分にも固有ではないその他のコアヘルパーを提供します。
-
org.springframework.expression –このパッケージは、 Spring ExpressionLanguageの背後にあるコア抽象化を提供します。
-
org.springframework.http –このパッケージには、クライアント/サーバー側のHTTPに関する基本的な抽象化が含まれています。
- org.springframework.jdbc –このパッケージのクラスにより、JDBCが使いやすくなり、一般的なエラーの可能性が低くなります。
-
org.springframework.jms –このパッケージにはJMSの統合クラスが含まれており、SpringスタイルのJMSアクセスが可能です。
-
org.springframework.jndi –このパッケージのクラスは、JNDIを使いやすくし、JNDIに格納されている構成へのアクセスを容易にし、JNDIアクセスクラスに役立つスーパークラスを提供します。
-
org.springframework.orm.hibernate5 – Hibernate5.xとSpringの概念の統合を提供するパッケージ。
-
org.springframework.test.util –ユニットテストと統合テストで使用する一般的なユーティリティクラス。
このリストは限られており、Springフレームワークのコアパッケージについてのみ説明しています。 完全なリストはここにあります。
6. 結論
この簡単な概要記事では、Springエコシステムに存在するさまざまなプロジェクトを見て、Mavenの依存関係、GitHubプロジェクト、および各プロジェクトが提供する包括的な機能の豊富なコレクションを作成して、Webアプリを安全でスケーラブルかつ簡単にしました。一緒に暮らします。
また、アプリの論理的な側面に焦点を当てる力を提供するコアパッケージも調べました。