春のソースコード解析が始まります。春は何ですか?

ソースコードの前に言えば、あなたがソースコードを使用バネやspirngmvcを見てする必要があります前に、私たちは、当然のことながら、春の基本的な概念を確認しましょう。

春とは何ですか

春はエンタープライズアプリケーション開発を簡素化することを目的とオープンソースの軽量のJava SE(Java標準版)/のJava EE(Javaのエンタープライズ版)アプリケーション開発フレームワークです。アプリケーションが連携して動作するオブジェクトのセットです。従来のアプリケーション開発では、完全なアプリケーションが連携して動作するオブジェクトのセットで構成されます。したがって、ビジネス・ロジックの開発に加えて、アプリケーションの開発、ほとんどがこれらのオブジェクトの連携の所望の機能を実行する方法を懸念しているだけでなく、低い結合、高い凝集します。ビジネスロジックの開発は避けられない、とオブジェクトを作成し、これらのオブジェクト間の依存関係を管理するために私たちを助けるために、フレームアウトがある場合に。一部の人々は、このような「抽象工場、ファクトリメソッドのように、言うかもしれデザインパターン、これらの機能を行う実行することはできません、私たちは、オブジェクト間の依存性に対処する私たちを助けるために、オブジェクト、「発電機モード」の作成を支援することはできませんか」?しかし、これらは私たちが、私たちは、コンフィギュレーションの種類によって、オブジェクト間の依存関係の管理を、オブジェクトを作成することができれば、私たちの負担を増加させ、ビルダークラスを他のいくつかのファクトリクラスを作成するために、我々はこれらのクラスのうち、管理する必要が私たちを必要はありません私たちは、他のことを行うために多くの時間を節約することができ、開発をスピードアップ、工場、発電機によって作成され、私たちは多くの作業を軽減されないように、オブジェクト間の依存関係を管理する必要があります。春Frameworkはちょうど出てきたこの機能を完了するために、主にあります。

一般的にも、ロギング、パフォーマンス統計、セキュリティ制御、例外処理アスペクト指向機能を提供だけでなく、助けるように私たちは、オブジェクトとその依存関係を管理する手助けに加えて、Springフレームワークは、私が最も厄介なデータベーストランザクション自体はシンプル提供して管理しますJDBCアクセスの実装は、およびJava EEテクノロジの統合、独自のWebフレームワークのSpring MVCの層を提供し、(例えばJavaのメール、タスクのスケジューリングなど)の様々な、(そのようにHibernate、JPAなど)、サードパーティのデータ統合フレームワークへのアクセスを提供しますしかし、サードパーティのWebフレームワークと非常に簡単に統合。開発に使用するどのような技術末における選択のより多くの自由、我々ができるように、ここからは、独自の関数を提供することに加えて、他の技術やフレームワークの能力はまた、接着性を提供、春は超粘着プラットフォームであると考えることができます。そしてJAVA SE(C / Sアーキテクチャ)アプリケーションまたはJava EE(B / Sアーキテクチャ)かどうかをアプリケーション開発のためのこのプラットフォームを使用することができます。何かをするために私たちを助けるのは、最終的には春に深い見てみましょうか?

私たちは何をして春を行うことができます

私たちは、ほとんど何も私たちはの開発を簡素化することができ、残りのビジネスロジックを書く助けないために春の追加:

まず、従来のアプリケーション開発、社内手続きによってアセンブリ内のオブジェクトとオブジェクトのコントロール間の依存関係を作成し、これは、我々は、オブジェクト間の依存関係を変更したい場合は再コンパイル、ソースコードを変更する必要があり、さまざまなオブジェクト間の結合を増加します展開;そして春による春の使用は、オブジェクトおよび設定ファイルに従って組み立て間の依存関係を作成する場合は、あなただけの再コンパイルすることなく、設定ファイルを変更する必要があります。だから、春は、私たちは、設定ファイル間の依存関係を作成し、オブジェクトを組み立てることができます。

私たちは上のいくつかのログ、アクセス制御、パフォーマンス統計などを行いたい場合に、第2、私たちは、このようなアクセス制御やパフォーマンス統計ほとんどの繰り返しなので、コードなどでレガシーアプリケーション、オブジェクトやメソッドを必要とすることができます重複したコードの多くは診断は、このコードを削除して完了した後に、存在した場合にのみ、必要に応じて、我々は単にパフォーマンス統計情報としてかもしれないが、一部の人々は、私は一般的な部分が抽出されていて、そこに呼び出されるか繰り返さなければならないことを言っていても、そこにある。そこにログインしています、ひどい方法の実施を検討し、取り組んでいるか退屈な考え始める必要があり、同様のアクセスコントロールとして、浸透しなどの記録アクセスログ、アクセスログデータ、などのいくつかの方法で、すべてのメソッドにアクセスします。春、これらのログ・レコード、アクセス制御する場合は、パフォーマンス統計は、それを必要とする個人または被験者に浸透せず、アウト動的にこれらの機能を必要として、これらの機能を追加サポートしてい指向プログラミング春によりビジネスロジックから分離します。一部の人々は、我々はあなたがこれらを使用していますが、春の態様の使用は、プログラミングを重視しながら、まだ、プロキシがこれらのプロキシオブジェクトをオブジェクトをプログラム、またはカップルに作成する必要があることができ、「プロキシデザインパターン」または「ラッパーデザインモード」を使用することができると述べている場合があります一般的な構成により、上記の機能を達成するためのより良い方法を提供すること、およびコード内の既存のコードは、既存のビジネス・ロジックを集中に任意のコードを追加する必要はありません。だから、春のアスペクト指向プログラミングは、私たちがカップリングせずにログ記録を達成するのを助けることができ、パフォーマンス統計、セキュリティ制御。

どのように我々は、データベースのトランザクション管理を完了しない、従来のアプリケーションでは、サード?一連の必要とする「接続して取得し、SQLを実行し、トランザクションをコミットまたはロールバックすると、接続が閉じられている」が、また、最終的には、接続、恐ろしいことだけでなく、非常に退屈を閉じなければならないことを確実にするために、春を使用している場合、我々は唯一の接続を取得する必要があります、SQLを実行し、他の人が管理するの春に引き渡され、シンプルされました。だから、春は、私たちは、データベースのトランザクションを管理しやすくするために、非常にシンプルにすることができます。

四、春にも(そのようにHibernate、JPAなど)、サードパーティのデータアクセスフレームワークとのシームレスな統合を提供するだけでなく、データベースへのアクセスを容易にするために、JDBCアクセステンプレートの独自のセットを提供します。

五、春にはまた、(例えばStrutsの、JSFなど)サードパーティのWebフレームワークとのシームレスな統合を提供するだけでなく、ウェブ層構造を容易にするためのSpring MVCフレームワークの独自のセットを提供します。

六、春は簡単とJava EE(Java(登録商標)メール、タスクのスケジューリングなど)の統合、および(例えば、キャッシングフレームワークなど)より技術統合することができます。

春は何人かの人々が求めることができることを非常に多くの機能と非常に多くの主流の技術との統合を提供しています、私たちは非常に多くのことを行う手助けするだけでなく、面倒かつ困難なことで開発を行うために私たちを助けて、とすることができ、いや、これだけでSpringフレームワークでありますその他のオプション?もちろんありますが、例えば、EJBアプリケーション・サーバーに依存する必要があり、比較的使いやすいEJBへの開発が中小プロジェクトの開発における低効率の開発は、屠殺チキンチョッパーを取ることですが、それはかなりかさばるであるだけでなく、アプリケーションサーバーに依存する必要があります。なぜ、それは他のフレームワークが行うのではなく、春を使用する必要がありますか?のは、上読んでみましょう。

なぜ我々は春が必要なのか

最初のいくつかの概念を精緻化

1、アプリケーション:それは、私たちは、このようなショッピングサイト、OAシステムとして、機能を完了する必要が終了します。

2、フレーム:例えば、私たちはショッピングサイトを開発するためのフレームワークを使用することができ、半製品の特定の機能を完了することで、アプリケーションが出て作成されるように、機能の私たち自身の一部を行う、機能のフレームワークの一部を行います。そして、フレームワークは、アプリケーションを開発している時間の全体的なアーキテクチャを定めて、いくつかの基本的な機能を提供するだけでなく、クラスとオブジェクトを作成する方法を指定し、どのようにコラボレーション、我々は、私たちは、ビジネスロジックの開発に焦点を当ててみましょう、簡略化するために開発されてきました。

3、非侵入デザイン:これらのフレームワーククラスを継承した場合、非侵入型のデザインとして見ることができるこの設計によって提供されるクラスの枠組みを継承せずに、フレームの視点から理解することができる、それが侵入デザインがあり、後で前のフレームを変更する場合非侵入デザインが記述されている場合、コードは引き続き使用することができます前に、コードを再利用することはほとんど不可能書かれました。

4、軽量かつヘビー級:ヘビー級軽量の相対的な用語、軽量一般的には非侵襲的で、非常に小さな何かに依存して、リソースの消費量は、実際には、非常に、小さな展開が簡単で、かつそうです逆は真のヘビー級である一方、より簡単に、使用します。

5、POJO:ビジネス・ロジックまたは永続ロジックを含めることができますが、継承またはその他のJavaクラスまたはインタフェースフレームワークを実装していない特別な役割を果たしていないPOJO(プレーン古いJavaオブジェクト)、単純なJavaオブジェクト、。

6、コンテナ:日常生活は、プログラミングオブジェクトの視点から物事のアセンブリを含む容器の種類は、あるにもそう、など、理由はそこに、のうち、コンテナオブジェクトのライフサイクル管理をオブジェクトにロードされます。

図7に示すように、制御リバース:制御即ち反転、のIoCと略記は、制御依存性注入(依存性注入)の反転と呼ばれる名前があり、コンテナの間の関係は、制御プログラムではなく、伝統的なインプリメンテーション、プログラムコードを直接でありますコントロール。

8、豆:管理オブジェクトは、一般的に容器を指し、春のIoCコンテナスプリングは中央で管理オブジェクト。

なぜ私たちは春と春の2つの利点が必要なのですか

●非常に軽量コンテナ:アプリケーション・オブジェクトおよびアセンブリを作成するための集中、自動化された方法、およびアセンブリオブジェクトの作成を担当して、オブジェクトのライフサイクル管理は、複雑なアプリケーションに統合することができます。(春の任意の特定のクラスに依存しない)Springコンテナは非侵襲的であり、かつ完全にPOJOを開発、テストするアプリケーションを容易に、管理が容易。そして、コアJARパッケージは非常に小さく、Spring3.0.5 1M未満であり、かつ任意の環境(Java SEのまたはJava EE)で展開することができる任意のアプリケーション・サーバーに依存しません。

●AOP:AOPアスペクト指向プログラミングは、別の観点からコンパイル時実装時、すなわち、(OOPのに対して)オブジェクト指向プログラミングの構造を改善するためのプログラムを提供したり、ローディング中を通って実行するように、指向プログラミングを意味する頭字語であります動的プログラムに機能を追加するための技術のソースコードを変更せず。うち再利用可能な機能を抽出することである人気のポイントは、その後、適切なタイミングでこれらの一般的な機能は、アプリケーションに織り込まれ、このようなセキュリティ、ロギングなど、これらは共通の特徴があり、我々はその後、それらを抽出することができます適切なコードを実行するローカルプログラムに織り込まて実行することにより、これらの機能に必要な機能及び多重化を完了する。

●簡単なデータベースのトランザクション管理:自分の管理データベースのトランザクションの間でデータベースを使用するアプリケーションは、非常に厄介なもので、誤りを非常に受けやすい、春には、プラグイン可能なトランザクション管理のサポートをサポートしており、JEE環境をサポートしていません、春は、ビジネスロジックに集中するトランザクション管理から取引を管理して私たちは私たちを解放することができます。

●JDBC抽象化フレームワークとORMのサポート:春JDBCは、それが使いやすく、そのようなので、上の休止状態やなどのサードパーティのORMフレームワークを、統合するDAO(データアクセスオブジェクト)のサポートを提供し、非常に簡単に、そして完全に一致例外階層の春のトランザクションをサポートしており、春のオファーを使用。

●柔軟なWeb層のサポート:春自体は非常に強力なMVCフレームワークを提供し、簡単なようにStrutsとなどのサードパーティのMVCフレームワークと統合することができます。

●様々な技術の統合を簡素化:統合などのJavaメール、タスクスケジューラ、JMX、JMS、JNDI、EJB、動的言語、リモートアクセス、Webサービスを、提供するために、

春は、我々は全体を形成するために一緒に多くの技術を統合することができ、私たちは、シンプルなMVCフレームワーク、春はスーパー接着剤プラットフォームとして見ることができます作成​​し、当社の管理サービスのためのオブジェクトを組み立てる助け、私たちは、アプリケーション開発を簡素化することができますシステムアーキテクチャ、当社の開発プログラムを加速するためのより良い、より多くの優れた性能は、利点と同様に、我々はそれを考慮しない理由がありません。

春を学ぶためにどのように

春を学ぶために、我々は最初の明確な春は何か、何かをする、その後、これらの単純な例を認識することが私たちを助けている必要がありますので、あなたは基本的に春を使用する方法を知っています。春はコアIoCコンテナなので、徹底的にどのようなIoCコンテナ、およびどのようにコンテナを設定して使用するには、コンテナのすべての他の技術が実装に基づいています理解するようにしてください;のIoCをよく理解した後、上記のすべての指向プログラミング、明確なコンセプトを踏襲し、基本的な構成、および最終的原則の実現、次のステップは、データベースのトランザクション管理で、トランザクション管理をすることにより、実際の春のアスペクト指向プログラミングであり、財団はIoCコンテナと行わポスト指向プログラミング、非常に重要であるので、残りは多分実現している何かに基づきます、さらにリラックスご覧ください。春は、学ぶことを切望することはできません強固な基盤、強固な基盤を築く取る必要があり、これは仕事が早くもあります。

春の基礎

春のチャート

 

図1-1スプリングチャート

コアコンテナ:コア、豆、コンテキスト、ELモジュールを含みます。

●コアモジュールは:フレーム依存、などのリソースへのアクセスの底部分をカプセル化し、いくつかの一般的なツールをキャスト。

●豆モジュール:反転制御及び依存性注入を含む、フレームの基部を提供します。ビーンファクトリーコアが「工場デザインパターン」を達成するために本質的である容器であり、プログラミング「シングルトンデザインパターン」シングルトン完全コンテナによって制御され、指向プログラミングを達成するためにではなく、指向プログラミングインタフェースを促進することなく、すべてのアプリケーション維持するたBeanFactoryによって実際にプログラムロジックから抽出されたオブジェクト間の依存関係を維持するためにあなたを置くフレームワークによって管理されるオブジェクトとオブジェクト間の関係、これらすべての依存関係。

●コンテキストモジュール:コアと豆は、統合モジュールの機能に基づいており、資源豆バインディング、データ検証、国際化、Java EEのサポート、コンテナのライフサイクルイベントの普及を追加され、コア・インタフェースは、ApplicationContextのです。

●ELモジュールは:、それをアクセスをサポートし、プロパティ値、メソッド呼び出し、アクセス権を変更し、アレイサポート、コンテナとインデクサ、名前付き変数、算術及び論理演算のサポートを修正し、豆のSpringコンテナからのアクセスをサポートし、強力な表現言語のサポートを提供しますまた、リストや一般的な重合を選択し、投影リストをサポートしています。

AOP、側面モジュール:

●AOPモジュール:春AOPモジュール(アスペクト指向プログラミング)実装におけるアスペクト指向プログラミングAOPアライアンス準拠提供し、動的に存在することができ、このような当ロギング、アクセス制御、パフォーマンス統計および他の一般的な機能とビジネス・ロジックとして提供され、カップリングと一般的なビジネスロジック機能を減らすために、例えば第三レベルのこと;これらの機能は、あなたがその必要なコードに追加します。

●側面モジュール:AspectJのは、春のASPの機能よりも強力提供し、AspectJの統合のために用意されています。

データアクセス/統合モジュール:このモジュールは、JDBC、ORM、OXM、JMSおよびトランザクション管理が含まれています。

●取引モジュール:このモジュールは、春に使用されている限り、管理対象オブジェクトの利点は、春の春は、あなたのコード内のトランザクション制御せずにトランザクションを管理し、物事と宣言型プログラミングの管理をサポート得ることができるよう、トランザクションを管理します。

●JDBCモジュール:これらのテンプレートは退屈なJDBCコーディングだけでなく、伝統的なトランザクション制御をしなければならない、との取引を管理する春のメリットを享受することができます排除することができます使用して、JBDCのサンプルテンプレートが用意されています。

●ORMモジュール:人気の提供 - Hibernateは、JPAなどのシームレスな統合「オブジェクト関係」マッピングフレームワークを、Ibatissが好きです。そして、あなたは追加の制御トランザクションなしで、春のトランザクション管理を使用することができます。

●OXMモジュール:それがマッピングされたJavaオブジェクトにXMLデータ、XMLデータへのオブジェクト/ XML、Javaのマッピングされた目的を達成するためにマッピングを提供し、オブジェクト/ XMLマッピングの実装はJAXB、ヒマシ油、XMLBeansのとXStreamのを含みます。

●JMSモジュール:JMS(Javaのメッセージングサービス)については、単純な使用JMSのために、「メッセージプロデューサ、メッセージコンシューマ」テンプレートを提供し、JMSは2間のアプリケーションに使用、または分散しますメッセージ送信システム、非同期通信。

●ウェブ/リモーティングモジュール:ウェブ/リモーティングモジュールは、Web、Webベースサーブレット、WebベースのStruts、ウェブPorletモジュールが含まれています。

●Webモジュール:基本的なWeb機能を提供します。このようなマルチファイルアップロード、統合されたIoCコンテナ、リモート・アクセス・プロセス(RMI、ヘッセ、麻布)とWebサービスのサポート、および容易なアクセスRESTfulなサービスを提供するために、RestTemplateクラスを提供など。

●ウェブサーブレットモジュール:春MVCのWebフレームワークの実装を提供します。他の技術の春で完全にシームレスに要求リソースインジェクションの注釈、単純なデータバインディング、データ検証およびJSPタグを使用することは非常に簡単で、上に設けられたスプリングMVCフレームワーク。

●WebベースのStrutsモジュール:Strutsの、Struts1.xおよびサポートStruts2.xとのシームレスな統合を提供します

テストモジュール:スプリング支持JUnitのとTestNGのテストフレームワークだけでなく、このようなWebフレームワークをテストし、アナログ機能のHTTP要求のようないくつかの追加機能をSpringベースのテストを、提供します。

典型的なアプリケーションシナリオ

春は春を使用して構築することができる最も簡単な標準のJava SEプログラムからエンタープライズアプリケーションに、多くのシナリオに適用することができます。ここでは、より人気のあるシナリオのいくつかは以下のとおりです。

●一般的なWebアプリケーションのシナリオ:

 

図1-2 Webアプリケーション・シナリオ

Webアプリケーションのシナリオでは、典型的な3層アーキテクチャ:データモデルレイヤの実装、ドメインオブジェクト、データアクセスのためのデータアクセス層は、ロジック層は、ビジネスロジックを実装し、ウェブ層は、ページの表示を提供し、これらの層の全てを春のコンポーネントによって管理するために、春のトランザクション管理、AOPやその他のメリットを享受ますが、要求は唯一の入り口DispachterServletあり、それはそれぞれのウェブ層接合体にマッピングされている要求によって、対応する要求を実装する機能します。

●リモートアクセスのシナリオ:

春はちょうど適切なアドレスを設定することで、非常に単純なを達成するために、露出RMIサービス、などヘッセ、麻布、などのリモートアクセスサービスを提供するために非常に便利なことができ、サービスが背後に導入され、容易に達成することができます春に公開する必要があります。

●EJBアプリケーションシナリオ:

春も簡単に背後に詳述される、EJBと統合することができます。

注:IoCのとDIのより深い理解をしたい場合は、Martin Fowler氏の古典の記事「コントロールコンテナと依存性の反転マスターを参照してください噴射パターン」、 元のアドレス:http://www.martinfowler.com/記事/ injection.html

おすすめ

転載: www.cnblogs.com/xll1025/p/11407665.html