Spring Framework-Inversion of Control(IOC)
1 Spring Frameworkの概要
1.1春とは
Springはオープンソースフレームワークであり、2003年に登場した軽量のJava開発フレームワークで、Rod Johnsonが著書 『Expert One-On-One J2EE Development and Design』で説明したいくつかの概念とプロトタイプから派生しています。エンタープライズアプリケーション開発の複雑さを解決するために作成されました。フレームワークの主な利点の1つは、J2EEアプリケーション開発に統合されたフレームワークを提供しながら、ユーザーが使用するコンポーネントを選択できるようにする階層化アーキテクチャです。Springは基本的なJavaBeansを使用して、以前はEJBでしかできなかったことを実現します。ただし、Springの使用はサーバー側の開発に限定されません。シンプルさ、テスト容易性、疎結合の観点から、どのJavaアプリケーションもSpringの恩恵を受けることができます。Springの中核は、制御の反転(IoC)とアスペクト指向(AOP)です。簡単に言えば、Springは階層化されたJavaSE / EEフルスタック(ワンストップ)の軽量オープンソースフレームワークです。
1.2春の利点
プログラム自体によって作成されたオブジェクトは、プログラムが受け入れたオブジェクトになります。。サービスとDaoの分離は、Dao層に直接関係していないため、プログラム自体を変更する必要はありません。
便利なデカップリングとシンプルな開発(高い凝集性と低いカップリング)
Springは大きなファクトリー(コンテナー)であり、すべてのオブジェクトを作成および保守し、管理のためにSpringに引き渡すことができます。
Springファクトリーは、Bean
AOPプログラミング・サポートを生成するために使用されます
春には、便利なプログラムの許可傍受と操作監視などの機能を実装することができアスペクト指向プログラミングを提供します。
宣言的トランザクションサポート
手動プログラミングなしでトランザクションの管理を完了するように構成するだけで
よく、プログラムテストに便利
SpringはJunit4をサポートしており、アノテーションを通じてSpringプログラムを簡単にテストし
、さまざまな優れたフレームワークを統合できます。
Springは、さまざまな優れたオープンソースフレームワークを除外せず、さまざまな優れたフレームワーク(Struts、Hibernate、MyBatis、Quartzなど)を直接サポートし
て、JavaEE APIの使用の難しさを軽減します。
Springは、JavaEE開発で非常に難しいAPI(JDBC、JavaMail、リモート呼び出しなど)をカプセル化します。これにより、これらのAPIの適用の難しさが大幅に軽減されます。
Spring Frameworkのアスペクト指向プログラミング(AOP)
1 AOPとは
ソフトウェア業界では、AOPはアスペクト指向プログラミングの略です。つまり、アスペクト指向プログラミングは、事前コンパイルおよびランタイムダイナミックエージェントを通じてプログラム機能の統一されたメンテナンスを実現するテクノロジーです。AOPは、ソフトウェア開発のホットスポットであるOOP(オブジェクト指向プログラミング)の続きであり、Springフレームワークの重要なコンテンツであり、関数型プログラミングの派生パラダイムです。AOPを使用すると、ビジネスロジックのさまざまな部分を分離できるため、ビジネスロジックのさまざまな部分間の結合が減り、プログラムの再利用性が向上し、同時に開発の効率が向上します。
AOPは水平抽出メカニズムを採用して、従来の垂直継承システムの反復的なコードを置き換えます。
クラシックアプリケーション:トランザクション管理、パフォーマンスモニタリング、セキュリティチェック、キャッシング、ロギングなど
。SpringAOPは、特別なコンパイルプロセスやクラスローダーを必要とせずに、純粋なJavaで実装されます。実行時にプロキシ経由で拡張コードをターゲットクラスに組み込みます
。AspectJはJava言語に基づくAOPフレームワークです。Spring2.0以降、Spring AOPはAspectのサポートを導入しました。AspectJはJava言語を拡張し、専用のコンパイラを提供します。コンパイル時に水平コード織りを提供します
2 AOP実現原理
aopの最下層は、プロキシメカニズムを使用して実装されます。
インターフェース+実装クラス:Springはjdkの動的プロキシプロキシを使用します。
実装クラス:Springはcglibバイトコード拡張を使用します。
3 AOP用語
1.target:ターゲットクラス、プロキシが必要なクラス。例:UserService
2.ジョインポイント(接続ポイント):いわゆる接続ポイントは、傍受される可能性のあるメソッドを指します。例:すべてのメソッド
3. PointCut:拡張された接続ポイント。例:addUser()
4.アドバイス通知/拡張、拡張コード。例:後、前
5.ウィービング:ターゲットオブジェクトに拡張アドバイスを適用して、新しいプロキシオブジェクトプロキシを作成するプロセスを指します。
6.proxyプロキシクラス
7.Aspect(Aspect):ポイントカットとアドバイスの組み合わせ
ラインは特別な顔です。
エントリポイントと通知は特別な表面を形成します。