A、春のフレームワーク
1.1春のフレームワークモジュール:
- コアコンテナ:コア・コンテナSpringフレームワークの基本的な機能を提供します。コアコンテナの主要な構成要素であり
BeanFactory
、それは工場モデルの実現であること。BeanFactory
制御の反転(IOC)と別のモードに依存するアプリケーション及びアプリケーション・コードの実際の仕様に配置されています。 - Springコンテキスト:Springコンテキストは、Springフレームワークのコンテキスト情報を提供するために、設定ファイルです。Springコンテキストは、JNDI、EJB、電子メール、国際化、検証、およびスケジューリング機能などのエンタープライズサービスが含まれています。
- スプリングAOP:構成管理特性、スプリングフレームワークに統合アスペクト指向プログラミング機能に直接スプリングAOPモジュール。だから、あなたは簡単に春のフレームワークのサポートAOPによって管理される任意のオブジェクトを作ることができます。春AOPモジュールは、オブジェクトSpringベースのアプリケーションのためのトランザクション管理サービスを提供しています。EJBコンポーネントに依存することなく、春AOPを利用することで、宣言的トランザクション管理をアプリケーションに統合することができます。
- 春のDAO:JDBC DAO抽象化レイヤの提供、意味のある例外階層は、異なるデータベース・ベンダーがスローされた例外処理とエラーメッセージを管理するには、この構造を使用することができます。例外階層を簡素化エラー処理、大幅異常コード(例えば、開閉接続)の数を書き込む必要性を低減します。JDBC指向の例外春DAO汎用的なDAO例外階層に準拠しています。
- スプリングORM:スプリングフレームワークのORMフレーム番号は、このようJDO、HibernateとiBatisのSQLマップを含むオブジェクトリレーショナルORMツールを提供し、挿入されています。これらのすべては、春の一般的な取引やDAO例外階層に準拠しています。
- 春のWebモジュール:Webコンテキスト・モジュールは、Webベースのアプリケーションのコンテキストを提供し、アプリケーションコンテキストモジュールに基づいています。だから、Springフレームワークは、ジャカルタのStrutsとの統合をサポートしています。ウェブ処理モジュールは、マルチパート要求とドメインパラメータにバインドされた要求オブジェクトの仕事を単純化します。
- Spring MVCのフレームワーク:MVCフレームワークは、フル機能を備えたWebアプリケーションのMVCの実装を構築することです。インターフェイスポリシーにより、JSP、速度、タイル、iTextの、及びPOIを含むビューMVC技術の数を収容するために、高度な設定にMVCフレーム。
1.2春の3つの主要コンポーネント:
ApplicationContextのサブクラスでは、主に2つの側面が含まれています。
- これは、最も頻繁に使用されるコンテキスト、即ちAbstractRefreshableApplicationContextクラスに更新されるサブクラスが複数ある、すなわち、ユーザが動的に下に既存のコンテキスト構築設定情報を追加または変更することができ、ConfigurableApplicationContextコンテキスト変更可能であることを示します。
- WebApplicationContext名は、示唆彼ServletContextへのダイレクトアクセスWebコンテキストの準備ができて、通常の状況下では、このインタフェースは少ないです。
ApplicationContextのは、次のことを完了する必要があります。
- アプリケーション環境を識別します。
- たBeanFactoryを使用して作成したBeanオブジェクト
- オブジェクト・リレーショナル・テーブルの保存
- 様々なイベントをキャプチャする機能
二、コントロールのIOC反転
、「あるコントロールのIOC-反転、制御の反転」、技術的ではないが、デザインのアイデア。Java開発では、IOCはあなたではなくあなたの内部のオブジェクトの上に伝統的な直接制御するよりも、コンテナコントロールにオブジェクトを設計していることを意味します。どのように良いIOCは理解できますか?理解へのIOCの良いキーは、我々は徹底的に分析するために持っていること「用語を逆にする理由が逆転されているもの制御、誰がコントロール(反転は正のターンを持っている必要があります)、誰であるか」を定義することです:
● 誰がコントロールし、どのような制御:従来のJava SEプログラミング、我々は直接オブジェクト内に新しいを通じてオブジェクトを作成し、依存オブジェクトを作成するためのプログラム・イニシアチブ; Iocをコンテナから来て、IoCのは、これらのオブジェクトを作成するための特別なコンテナです、コントロールオブジェクトを作成し、誰がコントロール?当然のIoCコンテナコントロールオブジェクトの、どのようなコントロール?それは(だけでなく、など、このようなファイルなどのオブジェクトを含む)のリソースへの主制御外部からのアクセスです。
● なぜ逆転され、どのような逆転:前方、ある取得制御に直接依存オブジェクトへのオブジェクトの自社主導によるレガシーアプリケーションは、逆の前方そこに持っている。逆にコンテナからである一方、ヘルプへの依存オブジェクトを作成し、注入;なぜ逆転されますか?コンテナは、私たちは、それ受動的に依存オブジェクトを受け入れるのオブジェクトを従属オブジェクトを検索し、注入を助けるためにあるので、それは逆であり、何が逆?買収は逆に対象物に依存しています。
IOCは技術が、ガイドはどのように我々は疎結合、より良いプログラムを設計するという考えは、オブジェクト指向プログラミングの重要なルールではありません。従来のアプリケーションは、クラス間の高い結合が得られ、クラスの依存オブジェクト内たちの主導で作成され、それが困難なテストです。あなたは、コンテナでコンテナにコントロールの依存オブジェクトを作成し、検索するIoCコンテナを持っていたら、オブジェクト間、オブジェクトの組み合わせを注入し、オブジェクトが緩くも多重化機能を助ける試験を容易にするであろうれ、結合されて、より重要なのは、プログラムの全体のアーキテクチャは、非常に柔軟になってきていることができます。ヘルプへのIoCコンテナは、オブジェクトと依存性注入ではなく、アクティブなオブジェクトに移動することにより、対応するオブジェクトを見つけます。
2.1 DI依存性注入:
IOCはシステムの焦点は、あなたがオブジェクトに提供する必要があり、他のオブジェクトの動的に実行されています。これは、DI(依存性注入、依存性注入)によって達成されます。プログラムは、バネ注入を反射することによって達成される、オブジェクトのプロパティを変更する、オブジェクトの実行方法、動的オブジェクトの生成を可能にすることを実行しているときに、Javaの重要な特徴は、反射(反射)した後、1.3です。コントロールのIoC(制御の反転)の反転が制御オブジェクトを作成すると言われ、オブジェクトを作成し、制御するために、単独での機会を作成する前イニシアチブを転送し、そして今、この電力が第三者に転送されるように転送として、ファクトリオブジェクトを作成するために設計されたIoCコンテナは、あなたは、それがどのオブジェクトあなたを与えるだろうしたいどのオブジェクト、IoCコンテナで、依存関係は、元の依存性がなくなって、変わっていた、彼らはすべてのIoCコンテナに依存します、およびIoCコンテナを介してそれらの間の関係を確立します。
三、AOPアスペクト指向は、
我々は製織したいことを指定されたコード・ロケーション・コードでアスペクト指向機能によってAOP、パラメータの形式でプロセッサ部に渡され、その後、我々は我々が望む行うことができ解析された完全に動作をレンダリング行います。
3.1コンセプト
セクション(アスペクト):「懸念のモジュラーポイント、懸念複数のオブジェクト間でカットする」公式アブストラクトは、次のように定義されます
接続ポイント(ジョインポイント):プログラム実行中の行為。
オペレーションによって生成された「接続点」の「セクション」:通知(アドバイス)。
エントリポイント(ポイントカット):接続点がアサートマッチング、およびAOPポイントカットの発現に関連する通知。
聴衆(ターゲットオブジェクト):オブジェクトは、1つのまたは複数の面に通知します。
AOPプロキシ(AOPプロキシ)、スプリングAOP剤、JDKの動的プロキシとCGLIB剤中の2つの方法があります。
3.2通知の(アドバイス)タイプ
の参加ポイント(ジョインポイント)の実行前に通知が、その接続ポイントの前に実行を防ぐことはできません。(アドバイスの前に)事前に通知。ApplicationContextの<AOP:態様>で使用される内部<AOPは:前>要素は、宣言しました。
通知実行ポイントが終了(正常または例外リターンのいずれか)に参加:(アドバイスの後に)通知した後。ApplicationContextの<AOP:態様>で使用される内部<AOPは:後>要素は、宣言しました。
通知(リターンアドバイス後)RETURN:正常終了の接続点の後に実行通知、ケースは、例外がスローされているが含まれていません。ApplicationContextの中に<AOP態様>使用する内部<後の復帰>要素を宣言しました。
(アドバイス前後)サラウンド通知:通知、フィルタのウェブdoFilterメソッド同様のサーブレット仕様の接続点を囲みます。前のカスタム動作を実行することができますし、メソッドを呼び出した後、あなたも実行しないことを選択することができます。ApplicationContextの<AOP:態様>で使用される内部<AOPは:周り>要素は、宣言しました。
(アドバイス投げた後に)アドバイスを投げた後:アドバイスを例外はexitメソッドをスローされたときに実行されます。ApplicationContextの<AOP:態様>で使用される内部<AOPは:アフター投げ>要素は、宣言しました。
ポイントカット表現:もし実行(* com.spring.service * *(..)。)
1)コンパイル:クラスファイルが織りコンパイルされ、特別に必要とコンパイラは、例えば、行うことができ、製織のAspectJコンパイラ;
:; 2)クラスローダ特別なクラスローダを使用することは、手順の前にバイトコードクラス拡張ターゲットクラスにロードされ
実行されているセクションで:3)を実行します時間が織り込まれている、SpringAOPをこのようにセクションに織られ、原理は、JDKの動的プロキシを使用することです。
注釈ビジネス層コンポーネントの@Service(サービスレベル、我々は通常、この定義を使用します)
注釈層@Controller制御アセンブリ(例えばアクションで支柱として)
注釈データアクセスコンポーネント、すなわちコンポーネントの@Repository DAO
@Componentは、コンポーネントが分類されていない場合、我々は注釈にこのアノテーションを使用することができるコンポーネントを指します。
フィット注釈がありますAutowired @、@修飾子、@リソース、 ことを特徴とする:実装複数のクラスを含むインタフェース@Resourceを、そうでなければ@Autowired。
図1は、リソースデフォルト@豆の種類が注入に従って組み立てられると一致する名前が見つからない場合にのみ、名前によって注入組み立てることです。
名前で注射で有効にする場合は2、@ Autowiredデフォルトの注入は、アセンブリの種類に応じて、@Qualifierと組み合わせて使用する必要があります。
3は、@リソース注釈が提供され、J2EE、および@Autowiredは、スプリングによって提供されているので、春には@Resourceを使用しての推奨される方法でシステムの依存度を減らすために、Mavenプロジェクトは、後に交換する1.5 JREの必要性である場合。
4、資源@Autowiredと注釈がフィールドまたはsetterメソッドフィールドに書き込むことができます@
図5は、Autowired @メンバ変数、メソッドやコンストラクタのコメントを参照することができる、および注釈オブジェクト@Qualifierは、参照方法、コンストラクタパラメータに、メンバ変数です。
図6は、修飾子@(「XXX」)はXXビーンの名前であるため、@Autowiredの使用および戦略の@Qualifier組み合わせが自動的byTypeからBYNAME遷移中に注入します。
とき7、Autowiredは自動注入を注釈@、候補豆Springコンテナの数は一つだけと一致している必要があり、必要な非本質的な特性によって提供することができます。
リソースアセンブリシーケンス@ 8、
8.1。あなたは、例外がスローされます見つけることができない、豆のユニークなマッチが組み立て見つけるために、Springコンテキストから、名前とタイプを指定した場合は
8.2。名前が指定されている場合は、コンテキストから名前を検索( ID)はBeanが、組み立てられた例外がスローされ見つからない一致
8.3指定されたタイプの場合、アセンブリ、見つからない以上見つからない、例外がスローされますための豆型コンテキスト固有の一致が見つかったから
8.4。もし名前、および指定しないタイプ、自動組立BYNAME方式に従っていずれも、一致がない場合は、一致が自動的に組み立てられる場合、マッチは、バックオフプリミティブ型です。