1前書き

Spring Frameworkは、あらゆるデプロイメントプラットフォーム上で動作することができる最新のJavaベースのエンタープライズアプリケーションのためのクリーンで表現力豊かなプログラミングと設定モデルを提供します。

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


2特徴

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

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

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

管理
** 依存性注入

  • コントロールの反転

そしてもっとたくさん。


3 Mavenの依存関係

もしあなたがあなたのMavenプロジェクトにSpringを追加したいのなら、それについてのより多くの情報を見つけることができます:


4春のプロジェクト

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

小さく始めて、必要なものだけを使用してください – Springは設計上モジュール式です。

ここでそれらのプロジェクトのいくつかを見てみましょう。


4.1. Spring Web MVC


Web MVC

フレームワークは、すべてのHTTPリクエストを処理する

DispatcherServlet

を中心に設計されたModel-View-Controllerアーキテクチャを提供します。応答し、アプリケーションを疎結合にします。

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

こちらで完全なhttps://spring.io/guides/gs/serving-web-content/[guide]を見つけることができます。


4.2. Spring IOプラットフォーム


IO Platform

は、心配することなく必要な依存関係を選択できるように、Javaプロジェクトに含めることができる一連の依存関係(両方ともサードパーティ製ライブラリとしてのSpring Frameworkの依存関係)を定義しますバージョン間の互換性について(Spring IOが保証しているため)。

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


the GitHub project

をご覧ください。


4.3. 春のブーツ


Spring Boot

を使用すると、スタンドアローンの実稼動グレードのSpringベースのアプリケーションを簡単に実行できます。最小限の作業でSpringベースのアプリケーションを簡単に作成できます。

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

それはいくつかの(オプションの)モジュールから成ります:


  1. CLI

    • Groovyをベースにした、起動時に起動したアプリケーションを起動/停止するためのコマンドラインインターフェース。


  2. https://github.com/spring-projects/spring-boot/tree/master/spring-boot-project/spring-boot

    [Boot

Core] – 他のモジュールの基盤です。


  1. 自動設定

    • Springプロジェクトの広い範囲を自動設定するためのモジュール。特定のフレームワーク(Spring Batch、Spring Data JPA、Hibernate、JDBC)の可用性を検出します。


  2. Actuator

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


  3. スタート

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


  4. ツール

    • MavenとGradleのビルドツールとカスタムSpring Boot Loader(単一の実行可能jar/warで使用される)がこのプロジェクトに含まれています。

私たちはMavenの成果物https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter[ここ]を見つけて、https://github.com/spring-projects/spring-bootを見ることができます。[GitHubプロジェクト]


4.4. 春のデータ


Spring Data

の使命は、基礎となるデータストアの特別な特性を保持しながら、データアクセスのためのよく知られた一貫したSpringベースのプログラミングモデルを提供することです。

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

これは、特定のデータベースに固有の多数のサブプロジェクト(http://projects.spring.io/spring-data-jpa/[JPA]、http://projects.spring.io/など)を含む包括的なプロジェクトです。 spring-data-mongodb/[MongoDB]、http://projects.spring.io/spring-data-redis/[Redis]、http://projects.spring.io/spring-data-solr/[Apache Solr]

Gemfire

、http://projects.spring.io/spring-data-cassandra/[Apache Cassandra])。プロジェクトは、これらのエキサイティングなテクノロジの背後にある多くの企業や開発者と協力して開発されています。


4.5. 春のセキュリティ


Spring Security

は、Javaアプリケーションに認証と承認の両方を提供することに重点を置いたフレームワークです。すべてのSpringプロジェクトと同様に、Spring Securityの本当の力は、カスタム要件を満たすためにどれだけ簡単に拡張できるかにあります。それはhttps://github.com/spring-projects/spring-security/blob/master/license.txt[Apache 2.0ライセンス]の下で公開されているので、あなたは自分のプロジェクトでそれを自信を持って使うことができます。

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

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

より詳細な洞察を得るために、Spring securityのhttps://docs.spring.io/spring-security/site/docs/current/reference/html/appendix.html#appendix-faq[FAQ]をご覧ください。

Maven

依存関係ページ。また、

認証



登録

、およびlink:/spring-security-with-mavenのSpringセキュリティチュートリアルをご覧ください。セットアップ]Spring Security with Maven





4.6. 春の社会


Spring Social

は、アプリケーションがTwitter、Facebook、その他のhttp://などのサービスとしてのソフトウェアプロバイダと接続できるようにするフレームワークの拡張です。 oauth.net/[OAuth]認証ベースのAPI。 Webベースのアプリケーション用にすぐに使えるOAuth認証フレームワークを提供します。

特長:
  • を大幅に簡素化する拡張可能なサービスプロバイダフレームワーク

ローカルユーザーアカウントをホストプロバイダーアカウントに接続するプロセス。

  • あなたの間の認証フローを処理する接続コントローラ

Java/Spring Webアプリケーション、サービスプロバイダ、そしてあなたのユーザ。

Facebookなどの一般的なサービスプロバイダAPIへのJavaバインディング

Twitter、LinkedIn、TripIt、そしてGitHub。

  • ユーザーがあなたとの認証を可能にするサインインコントローラー

サービスプロバイダを介してサインインすることによってアプリケーション。

入門ガイド:

Facebookでの申請]**

Spring Social Twitterの設定

フェイスブックログイン]

Springはhttps://github.com/spring-projects/spring-social-samples[GitHub]プロジェクトのかなりの数の例を提供していますので、すぐに始めることができます。 current/reference/htmlsingle/[Spring Socialの参照]はhttps://github.com/spring-projects/spring-social/wiki/Quick-Start[クイックスタート]ページでも便利です。

** 4.7. スプリングシェル


Spring Shell

は、Springベースのプログラミングモデルを使用してコマンドで簡単に拡張できる対話型のシェルです。

シェルプロジェクトのユーザーは、Spring Shell jarに依存し、独自のコマンド(Spring Beanのメソッドとして提供される)を追加することで、フル機能のシェル(

aka

コマンドライン)アプリケーションを簡単に構築できます。

コマンドラインアプリケーションを作成すると、プロジェクトのREST APIと対話したり、ローカルファイルのコンテンツを操作したりする場合に便利です。


The GitHub project

はここにあります。


4.8. Spring Mobile


Spring Mobile

はフレームワークの拡張であり、http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvcモバイルWebアプリケーションの開発を単純化することを目的とした.html[Spring Web MVC]。

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

  • モバイル側のサーバー側検出のためのDevice resolver抽象化

タブレット端末
ユーザーが自分の名前か

彼女は、「普通」、「モバイル」、または「タブレット」の経験を好む
** ユーザーを最も適切なものに切り替えることができるサイトスイッチャー

携帯端末、タブレット端末、通常のサイトのいずれか。
サイトの好みを任意に示す
異なるを整理して管理するための** デバイスを意識したビュー管理

特定のデバイスのビュー

このhttps://github.com/spring-projects/spring-mobile-samples[sample application]を使用すると、すぐに始めることができます。


デバイスの検出

、https://docs.spring.io/spring-mobile/の処理も可能ですdocs/current/reference/html/device.html#site-preference[Webサイト設定]またはSpring MVCでモバイルWebコンテンツを配信する。


4.9. 春のバッチ


Spring Batch

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

この文脈におけるバッチアプリケーションとは、大量のデータ処理を対象とした自動化されたオフラインシステムのことです。 Spring Batchはこの基本的なバッチ反復を自動化し、通常はユーザーの介入なしにオフライン環境で、類似したトランザクションをセットとして処理する機能を提供します。

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

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


バッチサービスの作成

や他のSpringバッチhttp://projects.spring.io/spring-batch/resources.html[resourcesを使って簡単に始めましょう]。


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

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


  • org.springframework.cache

    • このパッケージは宣言的なキャッシュ管理のためのサブパッケージとクラスをサポートし、https://github.com/ben-manes/caffeine/[カフェイン]ライブラリでオープンソースキャッシュを設定し、オープンソースキャッシュのためのクラスをサポートしますhttp://ehcache.sourceforge.net/[EhCache 2.x]。


  • org.springframework.context

    • このパッケージは、メッセージソースとObserverデザインパターンのサポート、および一貫したAPIを使用してリソースを取得するアプリケーションオブジェクトの機能を追加するために、beansパッケージをベースにしています。


  • org.springframework.core

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


  • org.springframework.expression

    • このパッケージは

      Spring Expression Language

      の背後にあるコア抽象化を提供します。


  • org.springframework.http

    • このパッケージには、クライアント/サーバーサイドのHTTPに関する基本的な抽象概念が含まれています。


  • org.springframework.jdbc

    • このパッケージのクラスはJDBCを使いやすくし、一般的なエラーの可能性を減らします。


  • org.springframework.jms

    • このパッケージには、SpringスタイルのJMSアクセスを可能にするJMS用の統合クラスが含まれています。


  • org.springframework.jndi

    • このパッケージのクラスはJNDIをより使いやすくし、JNDIに格納された設定へのアクセスを容易にし、JNDIアクセスクラスのための便利なスーパークラスを提供します。

このリストは限定されており、Springフレームワークのコアパッケージを説明しているだけです。完全なリストhttp://docs.spring.io/spring/docs/current/javadoc-api/overview-summary.html[ここ]を見つけることができます。


6. 結論

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

また、アプリの論理的側面に焦点を合わせるための力を提供するコアパッケージも調べました。