Spring Frameworkは、最も人気のあるJava EEフレームワークの1つです。この記事では、以下について学びます:
- Springフレームワークのアーキテクチャ
- Springのコアコンポーネント
- Springフレームワークの傘下のさまざまなプロジェクト。
I looked at the Google Trends chart for Spring Framework, Servlet, JSP, and JSF. It’s clear that Spring is far ahead from all other Java EE technologies.

Spring Frameworkとは?
Springは、Javaエンタープライズエディションの最も人気のあるフレームワークの1つです。世界中の開発者が信頼性の高い高品質なアプリケーションを開発するためにSpringを使用しています。SpringフレームワークはRod Johnsonによって設計されました。その後、SpringはEJBモデルの代替技術としてJavaの世界で広く使用されるようになりました。Springフレームワークを使用してさまざまな種類のアプリケーションを作成できます。
Springのコアコンセプト – DI、IoC、AOP
- Dependency Injection(DI)やInversion of Control(IoC)が何かを理解することなしにSpring Frameworkを理解することは不可能です。Dependency Injectionは、Inversion of Control(IoC)のタイプの1つです。
- 制御の逆転 – これはオブジェクト指向プログラミングの原則であり、プログラムのオブジェクトが他のオブジェクトの具体的な実装に依存せず、後で相互作用するためのその抽象化(インターフェース)について知識を持つことができます。
- 依存性注入 – これは構造的なデザインパターンの組み合わせであり、アプリケーションの各機能に対して、条件付きで独立したオブジェクト(サービス)があり、そのオブジェクトはインターフェースによって知られている他のオブジェクト(依存関係)を使用する必要があります。 これらの依存関係は、その作成時にサービスに渡されます。これは、1つのクラスの要素を別のクラスに導入する状況です。実践では、DIはコンストラクタにパラメータを渡すか、セッターを使用して実装されます。このアプローチを実装するライブラリは、IoCコンテナとも呼ばれます。
- アスペクト指向プログラミング – アプリケーション内のクロスカット(機能)機能を区別するプログラミングパラダイムです。これらの機能は、複数のアプリケーションノードにまたがっているため、クロスカッティング関心事と呼ばれ、これらのクロスカッティングノートはアプリケーションの直接のビジネスロジックから分離されます。OOPでは、主要なユニットはクラスですが、AOPでは、主要な要素はアスペクトです。DIはアプリケーションクラスを個々のモジュールに分割し、AOPはクロスカッティング関心事を影響するオブジェクトから分離するのに役立ちます。
Spring Frameworkのアーキテクチャ
Spring Frameworkはいくつかの独立したモジュールに分かれており、アプリケーションで使用するモジュールを選択できます。以下の画像は、Spring Frameworkアーキテクチャの最も重要なモジュールを示しています。では、Springエコシステムのモジュールを1つずつ見てみましょう。
Spring Frameworkコアコンポーネント
Springのコアコンテナには、SpEL、Context、Core、Beansの4つのモジュールが含まれています。これらの要素の説明は以下の通りです:
- SpELモジュールは、実行中にオブジェクトを操作するための強力な式言語を提供します。
- Contextは、BeansとCoreを基に構築され、設定で定義された任意のオブジェクトにアクセスできます。Contextモジュールの主要な要素はApplicationContextインターフェースです。
- Coreモジュールは、IoCとDIプロパティを含むフレームワークの主要な部分を提供します。
- Beanモジュールは、Spring Beansを作成および管理する責任があります – アプリケーションコンテキストの構造ユニットです。
Spring Framework Web
SpringフレームワークのWeb層にはWeb、Web-MVC、Web-Socket、Web-Portletなどが含まれています。
- Webモジュールは、ファイルのダウンロード、Webアプリケーションの作成、REST Webサービスなどの機能を提供します。
- Web-MVCには、WebアプリケーションのためのSpring MVCの実装が含まれています。
- Web-Socketは、Webアプリケーションでのクライアントとサーバー間の通信をサポートします。
- Web-Portletは、ポートレット環境でのMVC実装を提供します。
Spring Framework Data Access
Data Access/Integrationコンテナには、JDBC、ORM、OXM、JMS、およびTransactionsモジュールが含まれています。
- JDBCはJDBCの抽象レイヤーを提供し、データベースへの接続に関連する単調なコードを開発者が手動で登録する必要をなくします。
- Spring ORMは、Hibernate、JDOなどの人気のあるORMとの統合を提供します。
- OXMモジュールは、Object / XML – XMLBeans、JAXBなどのリンクを担当しています。
- JMS(Java Messaging Service)モジュールは、メッセージの作成、送信、および受信を担当しています。
- トランザクションは、特定のメソッドとPOJOを実装するクラスのトランザクション管理をサポートしています。
その他のモジュール
Springには、AOP、Aspects、Instrumentation、Messaging、およびTestなどの他の重要なモジュールも含まれています。
- AOPは、アスペクト指向プログラミングを実装し、AOP機能の全体的なアーセナルを使用することを可能にします。
- Aspectsモジュールは、強力なAOPフレームワークであるAspectJとの統合を提供します。
- Instrumentationは、サーバーアプリケーションで使用されるクラスのインストルメンテーションとクラスローダーのサポートを担当しています。
- Messagingモジュールは、STOMPサポートを提供します。
- 最後に、TestモジュールはTestNGまたはJUnit Frameworkを使用したテストを提供します。
Spring 5の特徴
Spring 5は、Spring 4に大規模なアップデートをもたらしました。 Spring 5の重要な機能のいくつかは次のとおりです:Spring 5
- サポートされるJava 8、Java 9、Java EE 7、Java EE 8、Servlet 4.0、Bean Validation 2.0、およびJPA 2.2。Springが主要な技術の最新バージョンに追いつこうとしているのを見て嬉しいです。
- 新しいモジュールでの改善されたログ記録 – spring-jcl。
- ファイル操作はNIO 2ストリームを使用しており、したがってパフォーマンスが向上しています。
- Spring MVCコントローラメソッドの戻り値として、Reactor 3.1 FluxとMono、およびRxJava 1.3および2.1がサポートされています。
- Kotlin、Project Lombok、JacksonおよびGSONの代替としてのJSON Binding APIのサポート。
- Spring WebFlux – Springがリアクティブに進化中。
- サポートされるJUnit 5
- Kotlinを介した関数型プログラミングのサポート。
Springプロジェクトは当社のGitHubリポジトリで確認できます。
Source:
https://www.digitalocean.com/community/tutorials/spring-framework