マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Spring Framework

【OSS情報アーカイブ】Spring Framework

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「Spring Framework」とは

概要

Spring Framework(スプリングフレームワーク)とは、Javaプラットフォームを対象とするアプリケーションフレームワークです。「DI(依存性注入)」と「AOP(アスペクト指向プログラミング)」を中核とした豊富な機能を搭載し、効率的にエンタープライズJavaアプリケーションを開発できます。

基本説明

Spring Frameworkは、あらゆる種類のプラットフォーム上で、最新Javaベースのエンタープライズアプリケーション向けの包括的なプログラミングおよび構成モデルを提供します。

JVMでの代替言語として「Groovy」と「Kotlin」をサポートし、アプリケーションのニーズに応じてさまざまな種類のアーキテクチャに対応できる柔軟性を備えているため、さまざまなシナリオ向けのエンタープライズアプリケーションを開発できます。

また、Spring Frameworkはエンタープライズアプリケーションの「配管」に重点を置いており、アプリケーションレベルでのインフラストラクチャサポート機能を提供します。そのため、開発チームは展開環境の特定要因に不必要に結び付けられることなく、アプリケーションレベルのビジネスロジックに集中できます。

主要開発元

Spring Frameworkは、Pivotal社を中心として開発が進められています。

→pivotal.io

経緯

・2003年:初版リリース

Spring Frameworkは、初期J2EE仕様の複雑さへの対応として登場しました。

ユースケース

Spring Frameworkは、幅広いアプリケーションシナリオをサポートしています。

・アプリケーションサーバ実行—開発者が制御できないアップグレードサイクルのJDK環境
・クラウド環境実行—単一のjarとして実行
・スタンドアロンアプリケーション実行—バッチ実行、統合ワークロード実行 など

オフィシャルサイト情報

■オフィシャルサイト

→spring.io →projects →Spring Framework

■ライセンス情報

Spring Frameworkのライセンスは「Apache License 2.0」です。

詳細について、こちらを参照ください。
→GitHub →spring-projects/spring-framework →LICENSE.txt

■ダウンロード

→GitHub →spring-projects/spring-framework

同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Play Framework」「Java Server Faces」「Apache Wicket」など。

設計哲学

Spring Frameworkの基本原則は次のとおりです。

■①すべてのレベルで選択肢を提供

Spring Frameworkでは、設計方針の決定をできるだけ遅くできます。

・コードを変更せずに構成を通じて永続性プロバイダを切り替え
・インフラストラクチャの切り替え
・サードパーティAPIの切り替え など

■②多様な視点に対応

Spring Frameworkは柔軟性を取り入れており、多様な視点に対応します。

さまざまな視点による幅広いアプリケーションのニーズをサポートします。

■③強力な下位互換性を維持

Spring Frameworkは強力な下位互換性を維持します。

バージョンアップについては慎重に管理されており、バージョン間の重大な変更はほとんどありません。

慎重に選択されたJDKバージョンとサードパーティライブラリをサポートし、Springに依存するアプリケーションとライブラリのメンテナンスを容易にします。

■④長年にわたって維持されるAPI

Spring Framework開発チームは、直感的で、多くのバージョンと長年にわたって維持されるAPIの開発に多くの時間を費やしています。

■⑤高いコード品質基準を設定

Spring Frameworkは、コード品質に関する高い基準を設定しています。

「意味のある」「最新の」「正確な」javadoc整備に重点を置いているため、パッケージ間の循環依存関係がないクリーンなコード構造を維持できる非常に数少ないプロジェクトです。

モジュール構造

■概要

Spring Frameworkが提供する機能はモジュール単位で分割されているため、アプリケーションは必要なモジュールを選択することで利用できます。

■コアモジュール

モジュール構造の中心となるコアモジュールは、「構成モデル」と「依存関係注入メカニズム」を含みます。

■モジュール提供機能

各モジュールは、さまざまなアプリケーションアーキテクチャの基本的なサポートを提供します。

・メッセージング機能
・トランザクションデータ処理機能
・永続性機能
・Web関連機能 など

■Webフレームワーク

Spring Frameworkは以下のフレームワークをサポートしています。

・Spring MVC Webフレームワーク—サーブレットベース
・Spring WebFluxリアクティブWebフレームワーク

式言語「Spring Expression Language(SpEL)」

■概要

「Spring Expression Language(SpEL)」は、実行時にオブジェクトグラフのクエリと操作をサポートする強力な式言語です。

Springコミュニティのすべてのプロダクトで使用できる単一の式言語として開発されました。

■言語構文

言語構文は「Unified EL」に似ていますが、「メソッド呼び出し機能」や「基本的な文字列テンプレート機能」などが追加されています。

■言語機能

言語機能は、EclipseベースのSpring Tool Suite内のコード補完サポートのツール要件など、Springポートフォリオのプロジェクトの要件によって決まります。

■単独使用可能

「Spring Expression Language(SpEL)」は、Springコミュニティにおける基盤言語として機能しますが、自己完結型であるためSpringに直接結び付けられるわけではなく、単独でも使用できます。

■他言語統合

「Spring Expression Language(SpEL)」はテクノロジーに依存しないAPIに基づいているため、必要に応じて他のJava式言語の実装を統合できます。

・OGNL
・MVEL
・JBoss EL など

プログラミング言語「Kotlin」のファーストクラスサポート

■プログラミング言語「Kotlin」とは

「Kotlin」は静的型付け言語で、JVMを対象としています。

簡潔でエレガントなコードを記述しながら、Javaで記述された既存のライブラリと非常に優れた相互運用性を提供します。

→OSSxCloudNews →オープンソースの言語/Kotlinとは

■Kotlinのファーストクラスサポートを提供

Spring Frameworkは「Kotlinのファーストクラスサポート」を提供します。

これにより開発者は、Spring Frameworkを「ネイティブKotlinフレームワーク」であるかのようにKotlinアプリケーションを開発できます。

■Kotlin拡張機能

Kotlinは追加機能を使用して既存クラスを拡張する機能を提供します。

「Spring Framework Kotlin API」はこれらの拡張機能を使用して、既存のSpring APIに新しいKotlin固有の優れた機能を追加できます。

Springプログラミングモデル—Java EEとの関係

Java EEを補完するフレームワーク

Springプログラミングモデルは、Java EEプラットフォーム仕様を全面的にそのまま採用してはいません。

Spring FrameworkはJava EEと競合するものではなく「Java EEを補完するフレームワーク」です。

Java EEプラットフォームでの個々の仕様と統合

Spring Frameworkは、Java EEプラットフォーム仕様から慎重に選択された個々の仕様と統合されます。

・サーブレットAPI(JSR 340)
・WebSocket API(JSR 356)
・同時実行ユーティリティ(JSR 236)
・JSONバインディングAPI(JSR 367)
・Bean Validation(JSR 303)
・JPA(JSR 338)
・JMS(JSR 914) など

Javaエコシステムとの互換性

Spring Framework 5.0の時点では、Springは最低限の要件として「Java EE 7レベル(Servlet 3.1+、JPA 2.1+など)」を必要とします。

また同時に「Java EE 8レベル」の新しいAPIも使用可能です。

これによりSpring Frameworkは「Tomcat 8/9」「WebSphere 9」「JBoss EAP 7」などとの完全な互換性が保たれます。

Spring Frameworkのコアテクノロジー

DI(依存性注入)

■概要

「依存性注入(DI)」とは、「コンストラクタの引数」「ファクトリメソッドへの引数」「オブジェクトインスタンスの構築後に設定されるプロパティ」を通じてのみ、オブジェクトが依存関係を定義するプロセスです。

■依存性注入(DI)のメリット

「依存性注入(DI)」の原則により、コードは簡潔となり、オブジェクトに依存関係が提供されるとデカップリングがより効果的になります。

オブジェクトは依存関係を検索せず、依存関係の場所またはクラスを知りません。その結果、特に依存関係がインターフェースまたは抽象基本クラスにある場合、クラスのテストが容易になり、ユニットテストでスタブまたはモックの実装を使用できるようになります。

AOP(アスペクト指向プログラミング)フレームワーク

■AOP(アスペクト指向プログラミング)とは

「アスペクト指向プログラミング(AOP)」は、プログラム構造に関する別の考え方を提供することにより、オブジェクト指向プログラミング(OOP)を補完する方法です。

アスペクトにより、複数のタイプとオブジェクトにまたがるトランザクション管理などのモジュール化が可能になります。

■Spring AOP

概要

「Spring AOP」は、AOPの影響を受けやすいエンタープライズJavaアプリケーションのほとんどの問題に対する優れたソリューションを提供します。

Spring AOPの目的

「Spring AOP」のAOPに対するアプローチは、他の多くのAOPフレームワークのアプローチとは異なり、AOP実装とSpringコアコンテナを緊密に統合して、エンタープライズアプリケーションの一般的な問題を解決することを目的としています。

Spring AOPの用途

Spring AOPはpure Javaで実装されており、特別なコンパイルプロセスは必要ありません。

クラスローダー階層を制御する必要がないため、サーブレットコンテナまたはアプリケーションサーバでの使用などに適しています。

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【AIツール実験室】チャットAI対抗「添削能力」選手権🏆

AIツール実験室

2023.12.27

【AIツール実験室】チャットAI対抗「添削能力」選手権🏆

各チャットAIの「添削能力」について比較確認をしています。 「ChatGPT4と同等の添削能力を発揮した無料チャットAI」にご注目ください。 また、 ChatGPTカスタマイズ機能「GPTs」を利用して作成した GPTs文章添削機能「添削師匠さん✍️」を紹介しています。 課金勢は試しに使ってみてください。

AIツール関連 記事リストポータル

AIツール

2023.10.05

AIツール関連 記事リストポータル

AI 関連の記事をまとめたポータルページです。

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。