1.全体的なアーキテクチャ
Springは階層化されたアーキテクチャであり、一連の機能要素が含まれており、図に示すように約20のモジュールに分かれています。
これらのモジュールは次のように要約されます。
①コアコンテナ
Core Container (
コア・コンテナ)が含まBeans、Core、Context
とExpression Language
。コアとBeanはフレームワークの基本モジュールであり、IOC(制御反転)とDI(依存性注入)を制御します。
Core
モジュールには主に、Springフレームワークの基本的なコアツールクラスが含まれています。他のすべてのSpringコンポーネントは、このパッケージのクラスに依存する必要があります。コアモジュールは、他のコンポーネントの基本的なコアです。Beans
モジュールはすべてのアプリケーションで必要であり、構成ファイルへのアクセス、Beanの作成と管理、IOC / DI操作の実行に関連するすべてのクラスが含まれます。Context
このモジュールは、CoreおよびBeansモジュールに基づいて構築されており、JNDIレジストラと同様のフレームワークのようなオブジェクトアクセスメソッドを提供します。コンテキストはBeanの特別な機能を統合し、Springコアに多くの拡張を提供し、国際化、イベントの伝播、リソースのロード、およびコンテキストの透過的な作成のサポートを追加します。コンテキストの同僚は、EJB、JMX、基本的なリモート処理など、J2EEのいくつかの機能もサポートしています。ApplicationContextインターフェースは、Contextモジュールの鍵です。Experssion Language
実行時にオブジェクトを照会および操作するための式言語が提供されています。これは、JSP2仕様で定義されている統一された式言語の拡張です。この言語は、オブジェクトの属性値の設定/取得、属性の割り当て、メソッドの呼び出し、デジタルテキストへのアクセス、コンテナーとインデクサー、論理演算子と算術演算子、および名前付き変数をサポートしますそして、SpringのIOCコンテナーから名前でオブジェクトを取得します。また、リストの投影、選択、および一般的なリスト集約もサポートしています。
②データアクセス/統合
Data Access/Integration
レイヤーにはモジュールJDBC、ORM、OXM、JMS
とが含まれTransaction
ます。
JDBC
このモジュールはJDBC抽象化レイヤーを提供し、長いJDBCコーディングとデータベースベンダー固有のエラーコードの解析を排除します。ORM
一般的なオブジェクトリレーショナルマッピングAPI。そのようなJPA
とおりJDO
、Hibernate
、、iBatis
など、インタラクティブな層を提供することを目的とします。OXM
オブジェクト/ XMLマッピングに関する抽象レイヤーを提供します。JMS
メッセージの送受信をカプセル化します。Transaction
プログラムによる宣言型トランザクション管理をサポートします。
③ウェブ
Webコンテキストモジュールは、アプリケーションコンテキストモジュール上に構築され、Webベースのアプリケーションにコンテキストを提供するため、SpringフレームワークはJakarta Strutsとの統合をサポートしています。Webモジュールは、ほとんどの要求の処理と要求パラメーターのドメインオブジェクトへのバインドも簡素化します。Webモジュールは、メイン含まれWeb
、Web-Servlet
、Web-Struts
およびWeb-Porlet
モジュールを。
- Webモジュール:基本的なWeb指向の統合機能を提供します。例:ファイルのアップロード、サーブレットリスナーを使用したIOVコンテナーとWeb指向のアプリケーションコンテキストの初期化。
Web-Servlet
主にSpring MVCのいくつかの機能をカプセル化します。Web-Struts
Spring 3.0で廃止されたStrutsのカプセル化サポート。Web-Porlet
Porlet環境とWeb-ServletモジュールのMVC実装を提供します。
④AOP
アスペクト指向の実装を提供します。応募者は、メソッドインターセプターとポイントカットを定義して、分離のためにロジックとコードを分離できます。
⑤テスト
Testモジュールは、JUnitとTestNgを使用したSpringのテストをサポートしています。
2.環境構築
①ソースコードのプル:https :
//github.com/spring-projects/spring-framework
②IDEAインポート
③cglibとobienesisのコンパイルエラーを解決する
問題の原因:サードパーティのクラスとの競合を回避するために、Springは最新のcglibとobienesisを再パッケージ化しました。ソースコードにコードのこの部分を提供していませんでしたが、jarパッケージに直接入れたため、コードをプルしてインポートすると、コンパイルエラーが発生します。
IDEAの右側でGradleを開き、spring-coreを選択して、cglibRepackJarとobjenesisRepackJarを他の環境で実行し、欠落している2つの依存関係を自動的に導入します。
以降のコード分析は、分析と調査のための5.2.5.Releaseバージョンに基づきます。