Spring makes it easy to create Java enterprise applications. It provides everything you need to embrace the Java language in an enterprise environment, with support for Groovy and Kotlin as alternative languages on the JVM, and with the flexibility to create many kinds of architectures depending on an application’s needs. As of Spring Framework 5.1, Spring requires JDK 8+ (Java SE 8+) and provides out-of-the-box support for JDK 11 LTS. Java SE 8 update 60 is suggested as the minimum patch release for Java 8, but it is generally recommended to use a recent patch release.

Spring は、幅広いアプリケーションシナリオをサポートしています。大企業では、アプリケーションは長期間存在することが多く、開発者が制御できないアップグレードサイクルの JDK およびアプリケーションサーバーで実行する必要があります。他のサーバーは、サーバーが組み込まれた単一の jar として、おそらくクラウド環境で実行されます。さらに、サーバーを必要としないスタンドアロンアプリケーション(バッチまたは統合ワークロードなど)もあります。

Spring はオープンソースで、大規模で活発なコミュニティがあり、さまざまな実世界のユースケースに基づいて継続的なフィードバックを提供しています。これは、Spring が非常に長い時間をかけてうまく進化するのに役立ってきました。

1. 「Spring」の意味

「Spring」という用語は、文脈によって異なるものを意味します。Spring Framework プロジェクト自体を参照するために使用でき、時間の経過とともに、他の Spring プロジェクトは Spring Framework の上に構築されてきました。ほとんどの場合、「Spring」と言うときは、プロジェクトのファミリー全体を意味します。このリファレンスマニュアルでは、Spring Framework 自体の基盤に焦点を当てています。

Spring Framework はモジュールに分割されています。アプリケーションは、必要なモジュールを選択できます。中心にあるのは、構成モデルと依存関係注入メカニズムを含む、コアコンテナーのモジュールです。さらに、Spring Framework は、メッセージング、トランザクションデータと永続性、Web など、さまざまなアプリケーションアーキテクチャの基本的なサポートを提供します。また、サーブレットベースの Spring MVC Web フレームワークと、並行して Spring WebFlux リアクティブ Web フレームワークも含まれています。

モジュールに関する注意 : Spring のフレームワーク jar は、デプロイから JDK 9 のモジュールパス(「Jigsaw」)を可能にします。ジグソー対応のアプリケーションで使用するために、Spring Framework 5 jar には、jar アーティファクト名から独立した安定した言語レベルのモジュール名(「spring.core」、「spring.context」など)を定義する「Automatic-Module-Name」マニフェストエントリが付属しています(jar は、「.」の代わりに「-」を使用した同じ命名パターンに従います(例:「spring-core」および「spring-context」)。もちろん、Spring のフレームワーク jar は、JDK 8 と 9+ の両方のクラスパスで正常に機能し続けます。

2. Spring と Spring Framework の歴史

Spring は、初期の J2EE 仕様の複雑さへの対応として 2003 年に登場しました。Java EE と Spring は競合していると考える人もいますが、実際には Spring は Java EE を補完します。Spring プログラミングモデルは、Java EE プラットフォーム仕様を採用していません。むしろ、EE 包括的から慎重に選択された個々の仕様と統合されます。

Spring Framework は、依存性注入(JSR 330 (英語) )および共通アノテーション(JSR 250 (英語) )仕様もサポートしています。これらの仕様は、Spring Framework によって提供される Spring 固有のメカニズムの代わりに使用することを選択できます。

As of Spring Framework 5.0, Spring requires the Java EE 7 level (e.g. Servlet 3.1+, JPA 2.1+) as a minimum - while at the same time providing out-of-the-box integration with newer APIs at the Java EE 8 level (e.g. Servlet 4.0, JSON Binding API) when encountered at runtime. This keeps Spring fully compatible with e.g. Tomcat 8 and 9, WebSphere 9, and JBoss EAP 7.

Over time, the role of Java EE in application development has evolved. In the early days of Java EE and Spring, applications were created to be deployed to an application server. Today, with the help of Spring Boot, applications are created in a devops- and cloud-friendly way, with the Servlet container embedded and trivial to change. As of Spring Framework 5, a WebFlux application does not even use the Servlet API directly and can run on servers (such as Netty) that are not Servlet containers.

Spring は、革新と進化を続けています。Spring Framework 以外にも、Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch などのプロジェクトがあります。各プロジェクトには、独自のソースコードリポジトリ、課題追跡、リリースケイデンスがあることを覚えておくことが重要です。Spring プロジェクトの完全なリストについては、spring.io/projects を参照してください。

3. 設計哲学

フレームワークについて学ぶとき、それが何をするかだけでなく、どの原則に従うかを知ることが重要です。Spring Framework の基本原則は次のとおりです。

  • すべてのレベルで選択肢を提供します。Spring を使用すると、設計の決定をできるだけ遅らせることができます。例:コードを変更せずに構成を通じて永続性プロバイダーを切り替えることができます。他の多くのインフラストラクチャの懸念やサードパーティ API との統合についても同様です。

  • 多様な視点に対応します。Spring は柔軟性を取り入れており、物事をどのように行うべきかについては意見がありません。さまざまな視点で幅広いアプリケーションのニーズをサポートします。

  • 強力な下位互換性を維持します。Spring の進化は慎重に管理されており、バージョン間での重大な変更はほとんどありません。Spring は、Spring に依存するアプリケーションとライブラリのメンテナンスを容易にするために、慎重に選択された JDK バージョンとサードパーティライブラリの範囲をサポートしています。

  • API 設計に注意してください。Spring チームは、多くのバージョンと何年にもわたって直観的であり続ける API の作成に多くの考えと時間を費やしました。

  • コード品質の高い基準を設定します。Spring Framework は、意味のある最新の正確な javadoc に重点を置いています。これは、パッケージ間の循環依存関係がないクリーンなコード構造を主張できる非常に数少ないプロジェクトの 1 つです。

4. フィードバックと貢献

使い方質問、または課題の診断またはデバッグについては、StackOverflow を使用することをお勧めします。使用する推奨タグをリストした質問ページ (英語) があります。Spring Framework に課題があることを確信している場合、または機能を提案したい場合は、GitHub の課題 (英語) を使用してください。

解決策を考えているか、修正案があれば、Github (英語) でプルリクエストを送信できます。ただし、最も些細な課題を除くすべての課題については、チケットが課題トラッカーに提出され、そこで議論が行われ、将来の参照のために記録が残されることに留意してください。

詳細については、CONTRIBUTING (GitHub) のトップレベルプロジェクトページのガイドラインを参照してください。

5. 入門

Spring を使い始めたばかりの場合は、Spring Boot ベースのアプリケーションを作成して、Spring Framework の使用を開始できます。Spring Boot は、本番用の Spring ベースのアプリケーションを作成するための迅速な(そして独自の)方法を提供します。これは Spring Framework に基づいており、構成よりも慣習を優先し、できるだけ早く起動して実行できるように設計されています。

start.spring.io (英語) を使用して、基本プロジェクトを生成するか、RESTful Web サービスの構築を開始するなどの「入門」ガイドのいずれかに従うことができます。消化しやすいだけでなく、これらのガイドは非常にタスク重視であり、それらのほとんどは Spring Boot に基づいています。また、特定の問題を解決する際に検討したい Spring ポートフォリオのその他のプロジェクトもカバーしています。

Unofficial Translation by spring.pleiades.io. See the original content.