| 開発者 | ヴイエムウェア |
|---|---|
| 初回リリース | 2002年10月1日 |
| 安定版リリース | 6.2.0 [1]
/ 2024年11月14日 |
| リポジトリ |
|
| 書かれた | ジャワ |
| プラットフォーム | Java EE |
| タイプ | アプリケーションフレームワーク |
| ライセンス | Apache ライセンス2.0 |
| Webサイト | spring.io/projects/spring-framework |
Spring Framework は、 Java プラットフォーム用のアプリケーション フレームワークおよび制御の反転 コンテナです。[2]このフレームワークのコア機能はどの Java アプリケーションでも使用できますが、Java EE (Enterprise Edition) プラットフォーム上にWeb アプリケーションを構築するための拡張機能があります。このフレームワークは、特定のプログラミング モデルを強制しません。[要出典]このフレームワークは、 Enterprise JavaBeans (EJB) モデルの追加として Java コミュニティで人気を博しています。 [3] Spring Framework は無料のオープン ソース ソフトウェアです。[4] : 121–122 [5]
バージョン履歴
最初のバージョンはロッド・ジョンソンによって書かれ、彼は2002年10月に著書『Expert One-on-One J2EE Design and Development』の出版とともにフレームワークをリリースした。フレームワークは2003年6月にApache 2.0ライセンスの下で初めてリリースされた。最初の製品リリースである1.0は2004年3月にリリースされた。[6] Spring 1.2.6フレームワークは2006年にJolt生産性賞とJAXイノベーション賞を受賞した。 [7] [8] Spring 2.0は2006年10月に、Spring 2.5は2007年11月に、Spring 3.0は2009年12月に、Spring 3.1は2011年12月に、Spring 3.2.5は2013年11月にリリースされた。 [9] Spring Framework 4.0は2013年12月にリリースされた。[10] Spring 4.0の注目すべき改善点には、Java SE(Standard Edition)8、Groovy 2、[11] [12] Java EE 7のいくつかの側面とWebSocket。[13]
Spring Framework 4.2.0は2015年7月31日にリリースされ、すぐにバージョン4.2.1にアップグレードされ、2015年9月1日にリリースされました。[14]これは「コアの改良と最新のWeb機能に重点を置いており、Java 6、7、8と互換性があります」。[15]
Spring Framework 4.3は2016年6月10日にリリースされ、2020年までサポートされました。 [16]これは、「一般的なSpring 4システム要件(Java 6+、Servlet 2.5+)内の最終世代となる」と発表されました。[15]
Spring 5はReactive Streams互換のReactor Core上に構築されると発表されました。 [17] [古いソース]
Spring Framework 6.0は2022年11月16日にリリースされ、Java 17+ベースラインとJakarta EE 9+(jakarta名前空間内)への移行が組み込まれており、Servlet 6.0やJPA 3.1などの最近リリースされたJakarta EE 10 APIに重点が置かれています。[18]
モジュール
Spring Framework には、さまざまなサービスを提供するいくつかのモジュールが含まれています。
- Spring Core Container: これはSpring [19]の基本モジュールであり、Spring Container (
BeanFactoryおよびApplicationContext) を提供します。[20] [21] [22]この文脈では、はグループに属するコアモジュール[24]spring-coreにある成果物[23]です。[25]この成果物は、IoCコンテナと、アプリケーション全体で使用されるユーティリティクラス[23]で構成されています。 [26]org.springframeworkspring-core - アスペクト指向プログラミング:横断的な関心事を実装することを可能にする。[27] [28]は
spring-aopAOPフレームワークの成果物である。[24] - 認証と認可: Spring Securityサブプロジェクト(旧称Acegi Security System for Spring)を通じて、さまざまな標準、プロトコル、ツール、プラクティスをサポートする設定可能なセキュリティプロセス。 [29] [30]
- 設定より規約: Spring ベースのエンタープライズ アプリケーション向けの迅速なアプリケーション開発ソリューションがSpring Rooモジュールで提供されます。
- データアクセス: Java Database Connectivity (JDBC) [31]とオブジェクトリレーショナルマッピングツールを使用したJavaプラットフォーム上のリレーショナルデータベース管理システム、およびNoSQL [32]データベースでの操作。これは、データソースセットアップクラスを含めることでJDBCアクセスをサポートするJDBCモジュールにある成果物です。[24]
spring-jdbc - 制御コンテナの反転:アプリケーションコンポーネントの構成とJavaオブジェクトのライフサイクル管理。主に依存性注入を介して行われます。[21]
- メッセージング: Java Message Service (JMS)を介してメッセージキューから透過的にメッセージを消費するためのメッセージリスナーオブジェクトの宣言的登録、標準JMS APIを介したメッセージ送信の改善。[33]
- モデル・ビュー・コントローラ: WebアプリケーションとRESTful(表現状態転送)Webサービスの拡張とカスタマイズのためのフックを提供するHTTPおよびサーブレットベースのフレームワーク。 [34] [35]
- リモートアクセスフレームワーク: 宣言型リモートプロシージャコール(RPC)スタイル[36] Javaリモートメソッド呼び出し( RMI) [37] CORBA (Common Object Request Broker Architecture)およびSOAP(Simple Object Access Protocol)などのWebサービスを含むHTTPベースのプロトコルをサポートするネットワーク上でのJavaオブジェクトのマーシャリング。[38] [39]
- トランザクション管理:複数のトランザクション管理APIを統合し、Javaオブジェクトのトランザクションを調整します。[40] [41]
- リモート管理: Java Management Extensions(JMX)を介してローカルまたはリモート構成用のJavaオブジェクトの宣言的な公開と管理。 [40] [42]
- テスト:単体テスト[43]と統合テスト[44]を書くためのクラスをサポートします。
- WebFluxサポート:UnderTowやNettyなどのリアクティブランタイムやWebサーバーの使用をサポートします。[24] [45]
- Web Socket サポート: WebSocket プロトコルを使用した通信をサポートします。このモジュールのアーティファクトは です
spring-websocket。 - XMLサポート:オブジェクトからXMLへのマッピングをサポートします。[24] Jakarta XML Binding(JAXB)やXStreamなどのライブラリがサポートされています。[24]このモジュールの成果物はです
spring-oxm。
SpringモジュールはJARファイルとしてパッケージ化されています。[46]これらの成果物には、 Maven [47]またはGradle [48]を使用してMaven Central Repositoryからアクセスできます。
制御コンテナの反転
制御の反転(IoC)コンテナは、Spring Frameworkのコアコンテナです。[2]リフレクションを使用してJavaオブジェクトを構成および管理するための一貫した手段を提供します。[2] [4] : 127–131 [49]コンテナは、特定のオブジェクトのオブジェクトライフサイクルを管理する責任があります。[4] : 128 これらのオブジェクトを作成し、[50]初期化メソッドを呼び出し、[49]これらのオブジェクトを接続して構成します。[51]
多くの場合、Spring Framework の他の部分を使用するときにコンテナを使用する必要はありませんが、コンテナを使用するとアプリケーションの構成とカスタマイズが容易になります。Spring コンテナは、アプリケーションを構成するための一貫したメカニズムを提供し、 小規模アプリケーションから大規模なエンタープライズ アプリケーションまで、ほぼすべての Java 環境と統合されます。
プログラマーはオブジェクトを直接作成するのではなく、Spring 構成ファイルで定義することによって、オブジェクトの作成方法を記述します。同様に、サービスとコンポーネントは直接呼び出されません。代わりに、Spring 構成ファイルで、呼び出す必要があるサービスとコンポーネントを定義します。この IoC は、メンテナンスとテストの容易さを向上させることを目的としています。
Beanの作成と管理
コンテナによって作成されたオブジェクトは、管理対象オブジェクトまたはBeanと呼ばれます。[52]コンテナは、XML(拡張マークアップ言語)ファイルをロードするか、構成クラス上の特定のJavaアノテーションを検出することで構成できます。これらのデータソースには、 Beanを作成するために必要な情報を提供するBean定義が含まれています。
は@Configuration、クラスを構成クラスとしてマークする Spring 固有のアノテーションです。構成クラスは Spring に Bean を提供しますApplicationContext。[53] Spring 構成クラスの各メソッドは、@Beanアノテーションを使用して構成されます。ApplicationContextその後、インターフェースは、アノテーションを使用して構成されたオブジェクトを@BeanBean として返します。Java ベースの構成が XML ベースの構成よりも優れている点は、型の安全性とリファクタリングのしやすさです。[53]
制御の反転の種類
制御の反転にはいくつかの種類があります。依存性注入と依存性検索は制御の反転の例です。[54]オブジェクトは依存性検索または依存性注入のいずれかの方法で取得できます。[4] : 127 [55]
依存性注入
依存性注入は、コンテナがコンストラクタ、[ 4] : 128 プロパティ、またはファクトリメソッドを介して、オブジェクト[4 ] : 128 を 名前で他のオブジェクトに渡すパターンです。依存性注入を実装する方法には、コンストラクタベースの依存性注入、セッターベースの依存性注入、フィールドベースの依存性注入などがあります。[56]
依存関係の検索
依存関係の検索は、呼び出し元がコンテナ オブジェクトに対して特定の名前または特定のタイプのオブジェクトを要求するパターンです。
自動配線
Springフレームワークにはオートワイヤリングと呼ばれる機能があり、Springコンテナを使用して、JavaBeanプロパティで指定された依存関係を現在のファクトリ内の適切なタイプのオブジェクトに自動的に満たします。[57]これは、適切なタイプのオブジェクトが1つしかない場合にのみ発生します。[57]
POJOの自動配線に使用できるアノテーションはいくつかあり、その中にはSpring固有のアノテーション@Autowire(および、またはアノテーションなどの自動配線の曖昧さを解決するのに役立つ他のいくつかのSpring固有のアノテーション@Qualifier)@Primary[ 58] [59]や標準Javaアノテーション@Resourceおよびが含まれます@Inject。[60]
この@Qualifierアノテーションは、Beanを定義するクラスで使用して、名前で自動配線するときにBeanの作成を優先するようにSpringに通知することができます。[59]
この@Primaryアノテーションは、Beanを定義するクラスで使用して、タイプ別に自動配線するときにBeanの作成を優先するようにSpringに通知することができます。[59]
この@Resourceアノテーションは、 JSR 250(Javaプラットフォームの共通アノテーション)に準拠したアノテーションです。この@Resourceアノテーションは、名前によるPOJOへの参照の自動配線に使用されます。[60]この@Injectアノテーションは、JSR 300(注入用の標準アノテーション)に準拠したアノテーションです。この@Injectアノテーションは、型によるPOJOへの参照の自動配線に使用されます。[60]
アスペクト指向プログラミングフレームワーク
Spring Frameworkには、横断的な関心事をアスペクトでモジュール化する独自のアスペクト指向プログラミング(AOP)フレームワークがあります。[61]独立したAOPフレームワークを作成する動機は、設計、実装、構成のいずれにおいてもあまり複雑にすることなく、基本的なAOP機能を提供することです。Spring AOPフレームワークは、Springコンテナを最大限に活用します。
Spring AOPフレームワークはプロキシパターンベースです。[62] [24]これは実行時に設定されます。[引用が必要]これにより、コンパイル手順やロード時のウィービングが不要になります。[引用が必要]一方、インターセプションでは、結合ポイントにある既存のオブジェクトに対するパブリックメソッドの実行のみが許可されます。[引用が必要]
AspectJフレームワークと比較すると、Spring AOP はそれほど強力ではありませんが、それほど複雑ではありません。[引用が必要] Spring 1.2 には、コンテナ内で AspectJ アスペクトを構成するためのサポートが含まれています。Spring 2.0 では、AspectJ との統合がさらに強化されました。たとえば、ポイントカット言語が再利用され、Spring AOP ベースのアスペクトと混在できるようになりました。[引用が必要]さらに、Spring 2.0 では、宣言型トランザクション管理[62]や AspectJ コンパイル時またはロード時のウィービングによる依存性注入[63]などの一般的な Spring 機能を提供するために AspectJ を使用する Spring Aspects ライブラリが追加されました。SpringSource は、 Spring Roo や Spring Insight などの他の Spring プロジェクトで AspectJ AOP を使用しており、Spring Security は AspectJ ベースのアスペクト ライブラリを提供しています。[引用が必要]
Spring AOPはSpring Framework内の横断的な関心事に対応するように設計されています。[4] : 473 コンテナによって作成および構成されるオブジェクトはすべてSpring AOPを使用して強化できます。
Spring Framework は、トランザクション管理、セキュリティ、リモート アクセス、およびJMXのために内部的に Spring AOP を使用します。[引用が必要]
フレームワークのバージョン 2.0 以降、Spring は AOP 構成に対して 2 つのアプローチを提供します。
- スキーマベースのアプローチ[64] [より良い情報源が必要]と
@AspectJベースの注釈スタイル。[65] [より良い情報源が必要]
<beans xmlns= "http://www.springframework.org/schema/beans" xmlns:mvc= "http://www.springframework.org/schema/mvc" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:aop= "http://www.springframework.org/schema/aop" xmlns:context= "http://www.springframework.org/schema/context" xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd" >
Spring チームは、新しい AOP 関連の用語を導入しないことに決めました。そのため、Spring リファレンス ドキュメントと API では、アスペクト、ジョイン ポイント、アドバイス、ポイントカット、イントロダクション、ターゲット オブジェクト (アドバイスされたオブジェクト)、AOP プロキシ、ウィービングなどの用語はすべて、他のほとんどの AOP フレームワーク (特に AspectJ) と同じ意味を持ちます[引用が必要]。
データアクセスフレームワーク
Springのデータアクセスフレームワークは、開発者がアプリケーションでデータベースを操作する際に直面する一般的な問題に対処します。Javaで人気のあるすべてのデータアクセスフレームワーク(JDBC、iBatis / MyBatis、[32] Hibernate、[32] Java Data Objects(JDO、5.x以降は廃止)、[32] Jakarta Persistence API(JPA)、[32] Oracle TopLink、Apache OJB、Apache Cayenneなど)がサポートされています。
サポートされているすべてのフレームワークに対して、Springは次の機能を提供します。
- リソース管理 – データベースリソースの自動取得と解放
- 例外処理 – データアクセス関連の例外をSpringデータアクセス階層に変換する[66]
- 取引参加 – 進行中の取引への透明な参加[4] : 290–291
- リソースのアンラッピング - 接続プールラッパーからデータベースオブジェクトを取得する
- バイナリラージオブジェクト(BLOB) と文字ラージオブジェクト(CLOB) 処理の抽象化
これらの機能はすべて、サポートされている各フレームワークに対して Spring が提供するテンプレート クラスを使用すると利用可能になります。 [67]批評家は、これらのテンプレート クラスは煩わしく、たとえば Hibernate API を直接使用する場合と比べて利点がないと述べています。[68] [検証失敗]これに対応して、Spring 開発者は Hibernate API と JPA API を直接使用できるようにしました。ただし、これには透過的なトランザクション管理が必要です。アプリケーション コードはデータベース リソースを取得して閉じる責任を負わなくなり、[69]例外変換もサポートされなくなります。[70]
Spring のトランザクション管理と組み合わせることで、データ アクセス フレームワークはデータ アクセス フレームワークを操作するための柔軟な抽象化を提供します。Spring Framework は共通のデータ アクセス API を提供しませんが、サポートされている API の完全なパワーはそのまま維持されます。[引用が必要] Spring Framework は、アプリケーション サーバーまたはコンテナーの外部で管理されたデータ アクセス環境を提供する Java で利用可能な唯一のフレームワークです。[71] [より良いソースが必要]
Hibernate でのトランザクション管理に Spring を使用する場合、次の Bean を構成する必要がある場合があります。
- いいねまたは[32
Datasource]com.mchange.v2.c3p0.ComboPooledDataSourceorg.apache.commons.dbcp.BasicDataSource - 属性付きの
SessionFactoryいいね[ 72] [4] : 173org.springframework.orm.hibernate3.LocalSessionFactoryBeanDataSource - A
HibernateProperties[4] : 173 いいねorg.springframework.beans.factory.config.PropertiesFactoryBean - 属性付きの
TransactionManagerいいね[ 72]org.springframework.orm.hibernate3.HibernateTransactionManagerSessionFactory
その他の構成ポイントは次のとおりです。
- 切断ポイントの AOP 構成。
- AOP アドバイスのトランザクションセマンティクス[明確化]。
トランザクション管理
Springのトランザクション管理フレームワークは、Javaプラットフォームに抽象化メカニズムをもたらします。[73]その抽象化により、次のことが可能になります。
- ローカルトランザクションとグローバルトランザクションの連携[4] : 258 (ローカルトランザクションにはアプリケーションサーバーは不要)
- ネストされたトランザクションの操作[74]
- セーブポイントの操作[74]
- Javaプラットフォームのほぼすべての環境で動作
比較すると、Java Transaction API (JTA) はネストされたトランザクションとグローバル トランザクションのみをサポートし、アプリケーション サーバー (場合によってはアプリケーション サーバーでのアプリケーションの展開) が必要です。
Spring Frameworkには、いくつかのトランザクション管理戦略のための
PlatformTransactionManager[75]が付属しています。
- JDBC接続で管理されるトランザクション[73]
- オブジェクトリレーショナルマッピング作業単位で管理されるトランザクション[73]
- JTAを介して管理されるトランザクション[73]
JtaTransactionManager[76] [4] : 255–257 およびUserTransaction[4] : 234 - オブジェクトデータベースなどの他のリソースで管理されるトランザクション
この抽象化メカニズムに加えて、フレームワークはアプリケーションにトランザクション管理を追加する 2 つの方法を提供します。
- 手続き的には、Springの
TransactionTemplate[77] - 宣言的に、XMLやJavaアノテーションなどのメタデータ
@Transactionalを使用することで( 、[62]など)
トランザクション管理フレームワークを統合したSpringのデータアクセスフレームワークと組み合わせることで、JTAやEJBに頼ることなく、設定を通じてトランザクションシステムをセットアップすることが可能になります。トランザクションフレームワークは、メッセージング[78]やキャッシュ[79]エンジンとも統合されています。
モデル・ビュー・コントローラフレームワーク

Spring Frameworkは、独自のモデル・ビュー・コントローラ(MVC)Webアプリケーションフレームワーク[35]を備えていますが、これは当初計画されていませんでした。Spring開発者は、(当時)人気があったJakarta Struts Webフレームワークの設計が貧弱であること[80] [検証失敗]、および他の利用可能なフレームワークの欠陥に対する反応として、独自のWebフレームワークを書くことにしました。特に、プレゼンテーション層とリクエスト処理層、およびリクエスト処理層とモデルの間の分離が不十分であると感じました。[81]
Struts と同様に、Spring MVC はリクエストベースのフレームワークです。[4] : 375 このフレームワークは、最新のリクエストベースのフレームワークで処理する必要があるすべての責任に対して戦略インターフェース[4] : 144 を 定義します。各インターフェースの目標は、Spring MVC ユーザーが独自の実装を簡単に記述できるようにすることです (必要な場合)。MVC により、フロントエンド コードがより簡潔になります。すべてのインターフェースは、サーブレット APIに密接に結合されています。サーブレット API へのこの密結合は、Spring 開発者が Web ベースのアプリケーションに高度な抽象化を提供できなかったことによる失敗であると考える人もいます[要出典]。ただし、この結合により、サーブレット API の機能が開発者に引き続き利用可能になり、操作を容易にする高度な抽象化フレームワークが提供されます。
このDispatcherServletクラスはフレームワークのフロントコントローラ[82]であり、 HTTPリクエストの実行フェーズ中にさまざまなインターフェースに制御を委任する役割を担っています。[83]
Spring MVCで定義されている最も重要なインターフェースとその役割は以下の通りです。[84]
Controller: と の間に入りModel、View受信リクエストを管理し、適切なレスポンスにリダイレクトします。[85] は、Controllerhttp リクエストを対応するメソッドにマッピングします。[86]Modelこれは、受信情報を誘導するゲートとして機能します。 に入るか、に入るかを切り替えますView。HandlerAdapter: 受信したリクエストを処理するオブジェクトの実行を担当します。[87]HandlerInterceptor: 着信リクエストを傍受する役割を担う。[87]サーブレットフィルタ[4] : 509 と同等であるが、同等ではない(使用はオプションであり[4] : 511 によって制御されないDispatcherServlet)。HandlerMapping: 受信したリクエストを処理するオブジェクト(ハンドラ)を、リクエストの内部または外部の属性や条件に基づいて選択する役割を担う[83]LocaleResolver:個々のユーザーのロケールを解決し、必要に応じて保存する役割を担う。 [88]MultipartResolver: 受信したリクエストをラップすることでファイルのアップロード作業を容易にします。[89]View: クライアントに応答を返す役割を担います。Viewにはビジネスロジックは含まれず、 によってカプセル化されたデータのみを提示する必要がありますModel。[35]リクエストによっては、Viewを経由せずに に直接送信されるものもあればModel、3つすべてを経由するものもあります。ViewResolverView:の論理名に基づいてを選択する責任があるView[90] [91](使用は厳密には必須ではない[4] :511 )。Model: ビジネスデータをカプセル化する役割を担う。[90]はModelコントローラによってビューに公開される。[4] : 374 (使用は厳密には必須ではない)。
上記の各戦略インターフェースは、フレームワーク全体において重要な役割を担っています。これらのインターフェースが提供する抽象化は強力であるため、実装にさまざまなバリエーションを持たせることができます。[4] : 144 Spring MVC にはこれらすべてのインターフェースの実装が同梱されており、サーブレット API の上に機能セットが用意されています。ただし、開発者やベンダーは自由に他の実装を書くことができます。Spring MVC は、キーが値であることが期待されるjava.util.Mapのデータ指向の抽象化として Java インターフェースを使用します。[引用が必要]ModelString
これらのインターフェースの実装のテストが容易なことは、Spring MVCが提供する高度な抽象化の重要な利点の1つです。[92] [4] : 324は、 DispatcherServletアプリケーションのWeb層を構成するためのSpring制御の反転コンテナと密接に結合されています。ただし、Webアプリケーションは、コンテナを含むSpringフレームワークの他の部分を使用して、Spring MVCを使用しないことを選択できます。
Spring MVCのワークフロー
ユーザーがリンクをクリックするか、ウェブブラウザでフォームを送信すると、リクエストは Spring に送られますDispatcherServlet。はSpring MVC のフロントコントローラDispatcherServletです。 [83] [93]は高度にカスタマイズ可能で柔軟性があります。[93]特に、や注釈付きクラスの実装よりも多くの種類のハンドラを処理できます。 [93]は 1 つ以上のハンドラ マッピングを参照します。[83] は適切なコントローラを選択し、リクエストをそのコントローラに転送します。 は特定のリクエストを処理して結果を生成します。これは として知られています。この情報は、html またはJakarta Server Pages (JSP とも呼ばれる) [83] [94]やThymeleafなどのフロントエンド技術でフォーマットする必要があります。[94]これはアプリケーションのです。 [83]すべての情報はAndオブジェクトにあります。コントローラが特定のビューに結合されていない場合、 はの助けを借りて実際の(JSP など)を見つけます。[83] [4] : 390–391 DispatcherServletorg.
springframework.web.servlet.mvc.Controllerorg.
springframework.stereotype.Controller DispatcherServletControllerModelViewModelViewDispatcherServletViewViewResolver
DispatcherServletの設定
サーブレット仕様バージョン3.0では、DispatcherServletを設定する方法はいくつかあります。[95]
web.xml以下のように設定します。 [95]
<サーブレット>
<サーブレット名> MyServlet </サーブレット名> <サーブレットクラス> org.springframework.web.servlet.DispatcherServlet </サーブレットクラス> < /サーブレット>
<サーブレットマッピング>
<サーブレット名> MyServlet </サーブレット名> <URLパターン> / <URLパターン> </サーブレットマッピング>
- [95]で設定することで
web-fragment.xml - [95]を使用することにより
javax.servlet.ServletContainerInitializer - インターフェースを実装することによって
org.springframework.web.WebApplicationInitializer。[95] - Spring Bootの組み込み自動構成を使用することで、
SpringBootServletInitializerclass.lm [95]
リモート アクセス フレームワーク
Springのリモートアクセスフレームワークは、クライアント接続とサーバー上のオブジェクトのマーシャリングの両方のためにJavaプラットフォームで利用可能なさまざまなRPC(リモートプロシージャコール)ベースのテクノロジを操作するための抽象化です。 [96]このフレームワークが提供する最も重要な機能は、制御の反転とAOPを組み合わせることで、これらのテクノロジの構成と使用を可能な限り容易にすることです。
このフレームワークは、障害回復 (接続失敗後の自動再接続) と、EJB リモートステートレス セッション Beanのクライアント側の使用に対するいくつかの最適化を提供します。
Springはこれらのプロトコルと製品をすぐにサポートします
- HTTPベースのプロトコル
- Hessian : バイナリシリアル化プロトコル、[97] [4] : 335 オープンソース[4] : 335 であり、 CORBAベースのプロトコルによって保守されています[要出典] 。HessianはCaucho社によって保守されています。[4] : 335 Hessianはステートレスリモート処理のニーズ、特にJava間通信に適しています。[4] : 335–336
- Burlap: XMLベースのバイナリプロトコルで、オープンソースであり、Caucho社によってメンテナンスされています。[97] [4] : 335 Hessianの代わりにBurlapを使用する唯一の利点は、 XML解析可能で人間が読めることです。[4] : 335 Java間の通信では、より軽量で効率的なため、Hessianが好まれます。[4] : 335
- RMI(1):RMIインフラストラクチャを使用したメソッド呼び出しだが、Springに特有である[96]
- RMI(2):通常のRMIの使用法に準拠したRMIインターフェースを使用したメソッド呼び出し[96]
- RMI-IIOP ( CORBA ): RMI-IIOP/CORBA を使用したメソッド呼び出し
- エンタープライズJavaBeanクライアント統合[98]
- ローカル EJB ステートレス セッション Bean の接続: ローカル ステートレス セッション Bean への接続
- リモート EJB ステートレス セッション Bean 接続: リモート ステートレス セッション Bean への接続
- 石鹸
- Apache Axis Webサービスフレームワークとの統合[99]
Apache CXFは、サーバー側でRPCスタイルのオブジェクトをエクスポートするためのSpring Frameworkとの統合を提供します。[99]
Spring リモート アクセス フレームワークでサポートされているすべての RPC スタイルのプロトコルと製品 (Apache Axis サポートを除く) のクライアントとサーバーの両方のセットアップは、Spring Core コンテナーで構成されます。
Spring Framework に含まれるリモート サブシステムの代替オープン ソース実装 (Cluster4Spring) があり、これはさまざまなリモート スキーム (1 対 1、1 対多、動的サービス検出) をサポートすることを目的としています。[引用が必要]
設定よりも規約を重視した迅速なアプリケーション開発
スプリングブート
Spring Boot Extension は、スタンドアロンでプロダクション グレードの[100] Spring ベースのアプリケーションを作成するためのSpring の規約優先ソリューションです。 [101] Spring チームの「独自の見解」[102] [103]に基づいて、Spring プラットフォームとサードパーティ ライブラリの最適な構成と使用方法が事前に設定されているため、最小限の手間で開始できます。ほとんどの Spring Boot アプリケーションでは、Spring の構成はほとんど必要ありません。[104]
主な特徴:
- スタンドアロンのSpringアプリケーションを作成する
- TomcatまたはJetty [105]を直接埋め込む( WARファイルをデプロイする必要はない)
- Maven / Gradleの設定を簡素化するために、独自の「スターター」プロジェクトオブジェクトモデル(POM)を提供する[106]
- 可能な限りSpringを自動設定する[107]
- メトリクス[108]、ヘルスチェック[108]、外部化された構成[109]などの本番環境対応[100]機能を提供する
- コード生成は一切不要[105]で、 XML構成も不要[106]です。 [110]
- スムーズな統合とすべてのエンタープライズ統合パターンをサポートします。
春のルー
Spring Roo は、 Javaでアプリケーションを迅速に構築するために、設定よりも規約を使用する代替のコード生成ベースのアプローチを提供するコミュニティ プロジェクトです。現在、Spring Framework、Spring Security、 Spring Web Flow をサポートしています。Roo は、次の点に重点を置いている点で、 他の迅速なアプリケーション開発フレームワークとは異なります。
- 拡張性(アドオン経由)
- Java プラットフォームの生産性 (他の言語と比較)
- ロックイン回避(Roo はどのアプリケーションからも数分以内に削除できます)
- 実行時間の回避(関連するデプロイメントの利点を含む)
- ユーザビリティ(特にシェルの機能と使用パターンを通じて)
バッチフレームワーク
Spring Batch は、大量のレコードを処理するために不可欠な再利用可能な機能を提供するバッチ処理フレームワークです。
最適化とパーティショニング[111]技術により、非常に大容量[112]かつ高性能なバッチジョブ[111]を可能にする、より高度な技術サービスと機能を提供します。
Spring Batchは一連のジョブを実行します。ジョブは多くのステップで構成され、各ステップは「READ-PROCESS-WRITE」タスクまたは単一操作タスク(タスクレット)で構成されます。「単一」操作タスクはタスクレットとも呼ばれます。[113]これは、ステップの開始前または完了後にリソースをクリーンアップするなど、単一のタスクのみを実行することを意味します。
「READ-PROCESS-WRITE」プロセスは、リソース(カンマ区切り値(CSV)、XML、またはデータベース)からデータを「読み取り」、それを「処理」し、他のリソース(CSV、XML、またはデータベース)に「書き込み」するステップで構成されます。たとえば、ステップはCSVファイルからデータを読み取り、[113]処理し、データベースに書き込むことができます。Spring Batchは、CSV、XML、およびデータベースの読み取り/書き込みを行うための多くのクラスを提供します。[114]
これらのステップは連結してジョブとして実行することができる。[113]
統合フレームワーク
Spring Integrationは、メッセージングやイベント駆動型アーキテクチャに不可欠な再利用可能な機能を提供するエンタープライズ アプリケーション統合フレームワークです。
- ルーター – 条件に基づいてメッセージをメッセージチャネルにルーティングする[115]
- トランスフォーマー – メッセージペイロードを変換/変形/変更し、変形されたペイロードを持つ新しいメッセージを作成する[116]
- アダプタ – 他のテクノロジーやシステム(HTTP、AMQP(Advanced Message Queuing Protocol)、[117] JMS(Java Message Service)、XMPP(Extensible Messaging and Presence Protocol)、SMTP(Simple Mail Transfer Protocol)、[118] IMAP(Internet Message Access Protocol)、FTP (File Transfer Protocol)、 FTPS / SFTP、ファイルシステムなど)と統合します。
- フィルター – 基準に基づいてメッセージをフィルタリングします。基準が満たされない場合、メッセージはドロップされます。[119]
@ServiceActivatorサービスアクティベーター – サービスオブジェクトに対する操作を呼び出す。Springは、この機能を必要とするコンポーネントを宣言するためのアノテーションの使用をサポートしています。 [120]- 管理と監査
- ゲートウェイ - 要求されたサービスのためのインターフェースをクライアントに公開します。メッセージング ミドルウェアは、このインターフェースのプロビジョニングを担当します。このインターフェースは、基盤となる JMS または Spring Integration API を隠すことで、メッセージング ミドルウェアをクライアントから切り離します。ゲートウェイは、Facade パターンに関連しています。Spring の Integration クラスは、
SimpleMessagingGatewayゲートウェイに不可欠なサポートを提供します。 により、SimpleMessagingGatewaySpring アプリケーションは、リクエストを送信するチャネルと、応答を受信するチャネルを指定できます。 の主な焦点はSimpleMessagingGatewayペイロードの処理であり、これにより、クライアントは送受信されるメッセージの複雑な詳細を気にする必要がなくなります。 は、SimpleMessagingGatewayチャネルとともに使用され、ファイル システム、JMS、電子メール、またはペイロードとチャネルを必要とするその他のシステムとの統合を可能にします。[121] - スプリッター - 大きなペイロードを小さなペイロードに分割して、異なる処理フローをサポートします。スプリッターは、Spring のスプリッター コンポーネントを使用して実現されます。スプリッター コンポーネントは通常、メッセージをより特殊な機能を持つクラスに転送します。Spring は、
@Splitterこの機能を必要とするコンポーネントを宣言するためのアノテーションをサポートしています。[122] - アグリゲータ - 多数のメッセージを 1 つの結果に結合するために使用されます。大まかに言えば、アグリゲータはスプリッターの逆です。アグリゲータは、下流のすべてのコンポーネントに 1 つのメッセージを発行します。Spring は、
@Aggregatorこの機能を必要とするコンポーネントを宣言するためのアノテーションをサポートしています。[122]
Spring Integration は、パイプとフィルター ベースのアーキテクチャをサポートします。
スプリングウェブソケット
データストリームを効果的に処理するための重要なルールは、ブロックしないことです。[123] WebSocketは、この問題に対する実行可能なソリューションです。[123] WebSocketプロトコルは、 TCP接続を介して全二重通信チャネルを可能にする低レベルのトランスポートプロトコルです。WebSocketは、HTTPの代替として機能し、クライアントとサーバー間の双方向通信を可能にします。WebSocketは、高速かつ大量の小さなデータチャンクを頻繁に高速に交換する必要があるアプリケーションに特に役立ちます。[123]
Springは、リアクティブアプリケーション用のWebSocket APIを提供することで、WebSocketプロトコルをサポートしています。@EnableWebSocketアノテーションは、Spring構成クラスに配置することでWebsocketリクエスト処理機能を提供します。必須のインターフェースは、WebSocketConfigurerへのアクセスを許可するですWebSocketConfigurer。次に、registerWebSocketHandlers(WebSocketHandlerRegistry)メソッドを実装することで、Websocket URLが関連するハンドラーにマッピングされます。[124]
スプリングウェブフラックス
Spring WebFluxは関数型プログラミングパラダイムに従うフレームワークで、リアクティブSpringアプリケーションを構築するために設計されています。このフレームワークは関数型プログラミングとReactive Streamsを広範に使用します。Spring WebFluxの適切な使用例は、チャット機能を備えたWebアプリケーションなど、瞬時に情報を送受信する必要があるアプリケーションです。[125]
Spring WebFlux技術を使用したアプリケーションは、MVCを使用したアプリケーションよりも読みやすさが劣りますが、回復力が高く、拡張が簡単です。[126] Spring WebFluxを使用すると、スレッドアクセスの同期に関連する複雑さに対処する必要性が軽減されます。[126]
Spring WebFluxは、サーバー送信イベント(SSE)をサポートしています。これは、クライアントがHTTP接続を介してサーバーから自動更新を取得できるようにするサーバープッシュテクノロジです。この通信は一方向であり、JMSのパブリッシュ/サブスクライブモデルと多くの類似点があります。[123]
Jakarta Enterprise Beans (EJB) との関係
コンテナは、Pitchfork プロジェクトによって、部分的に準拠したEJB (Enterprise JavaBeans) 3.0コンテナに変換できます。 [要出典]一部の人々[誰? ]は、Spring Framework が標準に準拠していないと批判しています。[127] [検証失敗]しかし、SpringSource は EJB 3 準拠を主要な目標とは考えておらず、Spring Framework とコンテナによってより強力なプログラミング モデルが可能になると主張しています。[128] [検証失敗]
Spring4Shell の脆弱性
2022年4月にCVE - 2022-22965としてSpring Frameworkの特定のバージョンに影響するリモートコード実行の脆弱性が公開されました。これは、最近のLog4Shellの脆弱性を参考にしてSpring4Shellと名付けられました。どちらも、脆弱なマシンで攻撃者がシェルアクセス[129]や完全な制御権を取得できるという同様の概念実証を持っています。[130]
参照
引用
- ^ 「リリース v6.2.0」。
- ^ abc Deinum et al. 2014、p. 47、§2 Spring Coreタスク。
- ^ Deinum et al. 2014、pp. 694–698、§16-2 JMSを使用した2つのシステムの統合。
- ^ abcdefghijklmnopqrstu vwxyz aa ab ac ad ae ジョンソン&ヘラー 2004。
- ^ Deinum & Cosmina 2021、p. 1、§1 ローカル開発環境の設定。
- ^ 「Spring Framework 1.0 Final Released」。公式Spring Frameworkブログ。2014年3月24日。 2021年3月1日閲覧。
- ^ ジョルト 2006 受賞者
- ^ 「JAX Innovation Award Gwinner 2006」。2009年8月17日時点のオリジナルよりアーカイブ。2009年8月12日閲覧。
- ^ 「Spring Framework 3.2.5 リリース」。公式 Spring ウェブサイト。2013 年 11 月 7 日。2016 年10 月 16 日閲覧。
- ^ 「Spring Framework 4.0 GA リリースの発表」。Spring ブログ。2013 年 12 月 12 日。
- ^ ウォールズ2016、pp.92–106、§5。
- ^ Cosmina et al. 2017、pp. 125–126、§4 Spring Configuration in DetailおよびSpring Boot。
- ^ コズミナら。 2017、pp. 1–18、§1 春の紹介。
- ^ 「Spring Framework 4.2 が GA に」。Spring ブログ。2015 年 7 月 31 日。
- ^ ab 「Spring Framework 4.2 が GA に」。Spring ブログ。
- ^ 「Spring Framework バージョン: サポートされているバージョン」. github.com .
- ^ 「Reactive Spring」。Spring Blog。2016 年 2 月 9 日。
- ^ 「Spring Framework 6.0 が GA に」。Spring ブログ。2022 年 11 月 16 日。
- ^ ウォールズ2019、48頁。
- ^ コアコンテナの Spring Framework ドキュメント
- ^ ab Johnson et al. 2005、第 2 章 - Bean ファクトリと ApplicationContext。
- ^ デイナムら。 2014、p. 137、§3-1 Java Config を使用した POJO の構成。
- ^ ab Johnson & Hoeller 2004、p. 150、Spring Framework の紹介 - コア Bean ファクトリー。
- ^ abcdefg Deinum & Cosmina 2021、pp. 22–25、§2 Spring Frameworkの基礎 - Spring Framework。
- ^ Walls 2016、p. 240、§付録 D Spring Boot の依存関係。
- ^ Johnson et al. 2005、第 1 章 Spring Framework の紹介 - モジュールの概要。
- ^ Johnson et al. 2005、第4章「SpringとAOP」。
- ^ デイナムら。 2014、pp. 196–198、§3-17 POJO の AOP の紹介。
- ^ Johnson et al. 2005、「Spring 向け Acegi セキュリティ システム」。
- ^ デイナムら。 2014、p. 331、§7 Spring Security。
- ^ ウォールズ2019、56-59頁。
- ^ abcdef デイヌムら。 2014、419 ~ 426 ページ、§10 データ アクセス。
- ^ Deinum et al. 2014、pp. 677–681、§15-4 Spring でメッセージ駆動型 POJO を作成する。
- ^ Johnson et al. 2005、第12章 - Web MVCフレームワーク。
- ^ abc デイヌムら。 2014、p. 217、§4 春 @MVC。
- ^ Deinum et al. 2014、pp. 525–534、§12-3 カスタム ItemWriter および ItemReader の作成。
- ^ Deinum et al. 2014、pp. 627–632、§14-7 RMI を介したサービスの公開と呼び出し、§14-8 HTTP を介したサービスの公開と呼び出し。
- ^ Deinum et al. 2014、pp. 641–658、§14-10 コントラクトファースト SOAP Web サービスの紹介、§14-11 Spring-WS を使用した SOAP Web サービスの公開と呼び出し、§14-12 Spring-WS と XML マーシャリングを使用した SOAP Web サービスの開発。
- ^ Johnson et al. 2005、第 8 章 - 軽量リモート処理。
- ^ ab Johnson et al. 2005、第9章 - サポートサービス。
- ^ デイナムら。 2014、p. 475、§11 Spring トランザクション管理。
- ^ Deinum et al. 2014、p. 591、§14 Spring Javaエンタープライズサービスとリモートテクノロジー。
- ^ Deinum et al. 2014、pp. 737–739、§17-3 Spring MVC コントローラーのユニットテスト。
- ^ Deinum et al. 2014、pp. 739–743、§17-4 統合テストにおけるアプリケーションコンテキストの管理。
- ^ Musib 2022、p. 358、§8.3 Spring WebFluxの紹介。
- ^ コズミナら。 2017、p. 21-23。
- ^ Cosmina et al. 2017、pp. 24–25、§2 Mavenを使用したSpringモジュールへのアクセス。
- ^ Cosmina et al. 2017、p. 26、§2 Gradle を使用した Spring モジュールへのアクセス。
- ^ ab Deinum et al. 2014、pp. 53–62、§2-2 コンストラクターを呼び出して POJO を作成します。
- ^ ab Deinum et al. 2014、pp. 48–52、§2-1 Spring IoC コンテナーを使用した POJO の管理と構成。
- ^ Deinum et al. 2014、pp. 59–67、§2-3 POJO 参照、自動配線、およびインポートを使用して他の POJO と対話する。
- ^ Deinum et al. 2014、pp. 112–116、§2-16 Spring のプロパティ エディターの使用。
- ^ ab Walls 2019、pp. 4–6、§1.1 Spring を使い始める - Spring とは何か。
- ^ コズミナら。 2017、p. 37、§3 Spring での IoC と DI の紹介。
- ^ 依存関係ルックアップと依存性注入の違いは何ですか - Spring フォーラム。Forum.springsource.org (2009-10-28)。2013-11-24 に取得。
- ^ Deinum & Cosmina 2021、pp. 26–32、§2 Spring Frameworkの基礎 - 依存性注入。
- ^ ab Johnson & Hoeller 2004、pp. 135–137、§6 軽量コンテナと制御の反転 - IOC コンテナ。
- ^ Deinum et al. 2014、pp. 145–151、§3-3 POJO 参照と自動配線を使用して他の POJO と対話する。
- ^ abc Cosmina et al. 2017、pp. 112–120、§3 Spring での IoC と DI の導入 - Bean の自動配線。
- ^ abc Deinum et al. 2014、pp. 151–154、§3-4 POJO を @Resource および @Inject アノテーションで自動的に接続します。
- ^ Deinum et al. 2014、pp. 99–104、§2-12 アスペクト指向プログラミング。
- ^ abc Deinum et al. 2014、pp. 492–494、§11-6 @Transactional アノテーションを使用した宣言的なトランザクションの管理。
- ^ Deinum et al. 2014、pp. 509–510、§11-11 ロード時ウィービングによるトランザクションの管理。
- ^ Spring AOP XML 構成
- ^ AspectJ アノテーション設定
- ^ Deinum et al. 2014、pp. 441–446、§10-5 Spring JDBC フレームワークでの例外処理。
- ^ デイナムら。 2014、426–441、463–465 ページ。
- ^ Hibernate VS Spring
- ^ Deinum et al. 2014、pp. 463–466、§10-8 SpringのORMテンプレートを使用したオブジェクトの永続化。
- ^ Deinum et al. 2014、pp. 446–462、§10-6 ORMフレームワークを直接使用する場合の問題点。
- ^ 「Spring Data JPA によるクエリの抽象化」。2018 年 2 月 6 日。2018 年 2 月 6 日閲覧。
- ^ ab Deinum et al. 2014、pp. 456–460、§10-7 SpringでのORMリソースファクトリの設定。
- ^ abcd Deinum et al. 2014、pp. 464–468、§11-2 トランザクションマネージャの実装の選択。
- ^ ab Deinum et al. 2014、pp. 494–499、§11-7 伝播トランザクション属性の設定。
- ^ Deinum et al. 2014、pp. 482–484、§11-2 トランザクションマネージャの実装の選択。
- ^ Deinum et al. 2014、pp. 484–486、§11-3 Transaction Manager API を使用したプログラムによるトランザクションの管理。
- ^ Deinum et al. 2014、pp. 486–489、§11-4 トランザクション テンプレートを使用したプログラムによるトランザクションの管理。
- ^ Deinum et al. 2014、pp. 677–685、§15-4 Spring でメッセージ駆動型 POJO を作成する。
- ^ Deinum et al. 2014、pp. 685–686、§15-5 JMS接続のキャッシュとプール。
- ^ Spring Framework の紹介
- ^ Johnson、「Expert One-on-One J2EE 設計および開発」、第 12 章他。
- ^ エンタープライズ アプリケーション アーキテクチャのパターン: フロント コントローラ
- ^ abcdefg Deinum et al. 2014、pp. 217–232、§4-1 Spring MVC を使用したシンプルな Web アプリケーションの開発。
- ^ Deinum & Cosmina 2021、pp. 82–83、§4 Spring MVCアーキテクチャ - リクエスト処理の概要。
- ^ Deinum et al. 2014、pp. 217–219、§4-1 Spring MVC を使用したシンプルな Web アプリケーションの開発。
- ^ ウォールズ2019、18-19頁。
- ^ ab Deinum et al. 2014、pp. 236–239、§4-3 ハンドラーインターセプターによるリクエストのインターセプト。
- ^ デイナムら。 2014、pp. 239–240、§4-4 ユーザー ロケールの解決。
- ^ Deinum & Cosmina 2021、pp. 75–76、§4 Spring MVCアーキテクチャ - リクエストを準備する。
- ^ ab Deinum et al. 2014、pp. 243–247、§4-6 名前によるビューの解決。
- ^ Deinum & Cosmina 2021、p. 81、§4 Spring MVCアーキテクチャ - ビューをレンダリングします。
- ^ デイナムら。 2014、p. 723、§17 春のテスト。
- ^ abc Deinum & Cosmina 2021、pp. 73–74、§4 Spring MVCアーキテクチャ - DispatcherServletリクエスト処理ワークフロー。
- ^ ab Walls 2019、35ページ。
- ^ abcdef Deinum & Cosmina 2021、pp. 84–90、§4 Spring MVCアーキテクチャ - DispatcherServletのブートストラップ。
- ^ abc Deinum et al. 2014、pp. 627–632、§14-7 RMI を介したサービスの公開と呼び出し。
- ^ ab Deinum et al. 2014、pp. 632–635、§14-8 HTTP 経由でサービスを公開および呼び出す。
- ^ Deinum et al. 2014、pp. 692–694、§16-1 EAIを使用した1つのシステムと別のシステムの統合。
- ^ ab Deinum et al. 2014、pp. 635–641、§14-9 JAX-WS を使用した SOAP Web サービスの公開と呼び出し。
- ^ ab Walls 2016、p. vii、§序文。
- ^ 「Spring Boot」. spring.io.
- ^ ウォールズ 2016、p.48、§2.4。
- ^ Deinum & Cosmina 2021、pp. 21–22、§2 Spring Framework Fundamentals。
- ^ ウォールズ2016、pp.37-48、§2.3。
- ^ ab Walls 2016、p.7、§1.1.3。
- ^ ab Walls 2016、p. x、§序文。
- ^ ウォールズ2016、pp.4-5、§1.1.2。
- ^ ab Walls 2016、pp.124–139、§7。
- ^ ウォールズ2016、pp.49–69、§3.1-§3.2.3。
- ^ 「Spring Bootについて」 。 2020年3月18日閲覧。
- ^ abc Deinum et al. 2014、pp. 536–541、§12-7 ステップ実行の制御。
- ^ Deinum et al. 2014、pp. 714–717、§16-9 Spring Batchを使用したイベントのステージング。
- ^ abc Deinum et al. 2014、pp.518–524、§12-2 読み書き。
- ^ デイナムら。 2014、511–512 ページ、§12 Spring Batch。
- ^ Deinum et al. 2014、pp. 713–714、§16-8 ルーターによる条件付きルーティング。
- ^ Deinum et al. 2014、pp. 704–707、§16-5 メッセージのタイプを別のタイプに変換する。
- ^ Deinum et al. 2014、pp. 686–690、§15-6 Spring を使用した AMQP メッセージの送受信。
- ^ Deinum et al. 2014、pp. 613–620、§14-4 Spring の電子メールサポートを使用して電子メールを送信する。
- ^ Deinum et al. 2014、p. 406、§9-2 サーブレットとフィルターでの Spring の使用。
- ^ Deinum et al. 2014、pp. 695–698、§16-2 JMSを使用した2つのシステムの統合。
- ^ デイナムら。 2014、717 ~ 722 ページ、§16-10 ゲートウェイの使用。
- ^ ab Deinum et al. 2014、pp. 710–713、§16-7 フォーク統合制御:スプリッターとアグリゲーター。
- ^ abcd Deinum & Cosmina 2021、pp. 422–425、§11 WebSocketプロトコル。
- ^ Deinum & Cosmina 2021、pp. 425–432、§11 WebSocketプロトコル。
- ^ Deinum & Cosmina 2021、p. 369、§10 Spring WebFluxを使用したリアクティブアプリケーションの構築。
- ^ ab Deinum & Cosmina 2021、p. 421、§11 Spring WebFlux アプリケーションのセキュリティ保護。
- ^ Spring と EJB3 の比較
- ^ 「Pitchfork FAQ」。2006年6月6日閲覧。
- ^ 「Spring4Shell: Spring の重大な脆弱性 - Kaspersky 公式ブログ」。
- ^ Chirgwin, Richard (2022年4月4日). 「VMware、Spring4shellの脆弱性により被害を受ける」. itnews.com.au. 2024年2月13日時点のオリジナルよりアーカイブ。2024年2月13日閲覧。
参考文献
- コズミナ、ユリアナ。ロブ、ハロップ。シェーファー、クリス。やあ、クラレンス (2017)プロスプリング5。カリフォルニア州バークレー:Apress。土井:10.1007/978-1-4842-2808-1。ISBN 978-1-4842-2807-4。
- デイヌム、マーテン。コズミナ、ユリアナ(2021)。WebFlux を使用した Pro Spring MVC。カリフォルニア州バークレー:Apress。土井:10.1007/978-1-4842-5666-4。ISBN 978-1-4842-5665-7。
- デイナム、マーテン; ロング、ジョシュ;マック、ゲイリー; ルビオ、ダニエル (2014)。春のレシピ。カリフォルニア州バークレー: Apress。doi : 10.1007/978-1-4302-5909-1。ISBN 978-1-4302-5908-4。
- Johnson, Rod; Höller, Jürgen; Arendsen, Alef; Risberg, Thomas; Sampaleanu, Colin (2005 年 7 月 8 日)。『Spring Framework によるプロフェッショナル Java 開発』 (初版)。Wrox Press。672ページ。ISBN 0-7645-7483-3。
- ロブ、ハロップ。ヤン・マハチェク(2005 年 1 月 31 日)プロスプリング(初版)。を押します。 p. 832.ISBN 1-59059-461-4。
- Johnson, Rod、Jürgen, Höller (2002 年 10 月 23 日)。『J2EE Development without EJB』 (初版) 。Wrox Press。p . 768。ISBN 0-7645-5831-5。
- Johnson, Rod; Jurgen, Holler (2002 年 10 月)。Expert One-on-one J2EE 設計および開発(初版)。Wrox Press。p . 750。ISBN 0-7645-4385-7。
- ジョンソン、ロッド。ヘラー、ユルゲン (2004)。EJB を使用しないエキスパートによる 1 対 1 の J2EE 開発。インディアナ州インディアナポリス:ワイリー。ISBN 978-0-7645-5831-3。
- Musib, Somnath ( 2022年 7 月 12 日)。Spring Boot in Practice。Simon and Schuster。ISBN 978-1-61729-881-3。
- ポラック、マーク; ギールケ、オリバー; リスバーグ、トーマス; ブリズビン、ジョン; ハンガー、マイケル (2012 年 10 月 31 日)。Spring Data (初版) 。O'Reilly。p . 316。ISBN 978-1449323950。
- Sarin, Ashish (2016 年 6 月 27 日)。Spring Framework 入門(第 3 版)。自費出版。p. 626。ISBN 978-1534985087。
- Long, Josh (2013 年 8 月 27 日)。Spring Framework LiveLessons (初版)。Addison -Wesley Professional。4時間以上。ISBN 978-0-13-346307-1。
- ウォールズ、クレイグ (2016 年 1 月 3 日)。Spring Boot in Action。マニング。ISBN 978-1-61729-254-5。
- ウォールズ、クレイグ(2019)。『Spring in Action 』。マニング。ISBN 978-1-61729-494-5。
- 「JAX Innovation Award Gwinner 2006」。2009年8月17日時点のオリジナルよりアーカイブ。 2009年8月12日閲覧。
- 「Pitchfork FAQ」。2006年6月6日閲覧。
- 「Spring Framework 4.0 GA リリースのお知らせ」。Spring ブログ。2013 年 12 月 12 日。
外部リンク
- 公式サイト
- 春のチュートリアル
