テン人気のJavaフレームワーク導入(スプリングライン+ダボ+のRabbitMQ + Ehcacheの+ Redisの)

一、SpringMVC

春のWeb MVCは、MVCアーキテクチャ・パターンの使用、デカップル業務へのWeb層は、リクエストドライバが使用ベースを参照するという考えに基づいて要求駆動型のWeb MVCデザインパターンの軽量Webフレームワークの種類のJava実装であります要求 - 応答モデル、フレームワークの目的は、私たちは私たちの日常Web開発を簡素化するためにも、開発、春のWeb MVCを簡素化することです。

モデル(モデル)、彼らは一般的にPOJOコンポーネント意志データとアプリケーションをカプセル化します。

ビュー(ビュー)は、モデルデータをレンダリングするための責任があると一般的には、クライアントのブラウザが解釈できる、HTML出力を生成します。

ユーザの要求を処理し、適切なモデルを確立する責任コントローラ(コントローラ)、およびビューをレンダリングするためにそれを渡します。

春のウェブモデル - ビュー - コントローラ(MVC)デザイン・フレームワークはのDispatcherServletを中心に構築されているすべてのHTTP要求と応答を処理します。

春のWeb MVCリクエスト処理ワークフロー

テン人気のJavaフレームワーク導入(スプリングライン+ダボ+のRabbitMQ + Ehcacheの+ Redisの)

 

次のように具体的な実施手順は次のとおりです。

図1に示すように、まず、ユーザが要求---->フロントエンドコントローラ、コントローラは、ページ要求情報(例えば、URL)を選択決定するコントローラのフロントエンドを送信し、即ち論理コントローラの制御の前に、それに委託要求に従って処理しますセクション;図2-1のステップ2。

2は、ページコントローラは、コマンドオブジェクトは、ビジネス・オブジェクトに委ね、あなたは、オブジェクトは、春のWeb MVCでのコマンドオブジェクトと呼ばれ、収集するための最初の必要性や、オブジェクトへのバインドリクエストパラメータを検証し、要求、処理機能を受け取ります処理するステップと、戻り処理後のModelAndView(ビュー名と論理データ・モデル)であるステップ2-1 3,4,5。

図3に示すように、コントローラバック制御の前端は、返された論理ビュー名に応じて、レンダリングされる適切なビューレンダリングのモデルビューにデータを選択し、ステップ2-1を図6及び7。

図4に示すように、コントローラの先端が再び制御を取り戻すために、応答は、図3のステップにおいて、ユーザに返さ2-18;この目的のために全体。

二、春

2.1、IOCのコンテナ:

IOCコンテナは、依存性注入機能、IOCコンテナインスタンス化位置、およびアプリケーション構成内のオブジェクト間のオブジェクトの依存関係を有する容器です。アプリケーションが直接IOCコンテナによってコード、アプリケーションアセンブリに関連する新しいオブジェクトを必要としません。春たBeanFactoryでIOC容器の実際の表現です。

2.2、AOP:

単純に、つまり、ビジネスの独立したものを置くが、ビジネス・ロジックや共通モジュールの責任は、システムを減らすとモジュール間の結合度を低減し、かつ将来の操作性とメンテナンス性を容易にするために、カプセル化され、簡単に重複したコードに呼ばれていますセックス。AOPは、水平の関係で表されます。

包装用の懸念を横断的AOPは、次のシナリオに特異的に使用することができます。

  • 認証権限
  • キャッシュキャッシュ
  • コンテンツ配信を渡すコンテキスト
  • エラー処理エラー処理
  • 遅延読み込み遅延ロード
  • デバッグデバッグ
  • ロギング、トレース、記録トラックの写真をプロファイリングおよび監視
  • パフォーマンスの最適化パフォーマンスの最適化
  • 持続性の持続性
  • リソースプールリソースプール
  • 同期同期
  • 取引トランザクション

三、MyBatisの

MyBatisの永続化フレームワークは、発行済普通SQLクエリ、ストアドプロシージャと高度なマッピングをサポートすることです。MyBatisの排除ほとんどすべての検索手動で設定JDBCコードとパラメータおよび結果セット。MyBatisのは、データベースのレコードを設定するための簡単なXMLまたは注釈を使用し、プリミティブをマッピングし、マップのインターフェイスとJavaのPOJO(プレーン古いJavaは普通のJavaオブジェクト、オブジェクト)。

全体のプロセス:

(1)ロード構成および初期化

トリガ条件:ロード・コンフィギュレーション・ファイル

SQL構成情報がメモリに記憶されている(着信パラメータマッピング構成を含む、SQL文を実行し、マッピング構成の結果)を一度MappedStatementオブジェクトにロードされます。

(2)呼要求を受信します

トリガー:呼び出すAPIが提供さMyBatisの

受信パラメータ:SQL IDと入ってくるパラメータオブジェクト

プロセス:プロセスは、下層の要求処理に要求を渡します。

(3)処理動作要求

トリガ条件:APIリクエストは、界面層を介して送信されます

受信パラメータ:SQL IDと入ってくるパラメータオブジェクト

プロセス:

(A)に対応する目標MappedStatement SQLのIDを検索してください。

最終パスを取得し、実行するSQLを実行するMappedStatementオブジェクトパラメータを解析渡されたパラメータオブジェクトから(B)。

(C)は、SQL文の最後の実行に応じて、データベース接続を取得し、実行し、結果を得るためにデータベースに渡されたパラメータを取得します。

(D)変換処理で得られたマッピング構成MappedStatementオブジェクトの実行結果の結果に基づいて、最終的な処理結果を与えます。

接続リソースを解放する(E)。

(4)最終的な処理結果が返された処理結果が返され

最も強力な機能の1つは、動的ステートメントMyBatisの機能です。あなたはJDBCまたは類似のフレームを使用して、以前の経験を持っている場合は、それは確かにスペースを忘れていないか、または列と他の列の後ろにカンマを省略していないことです一緒にどのように痛みを伴うSQL文の条件を理解します。動的ステートメントは、完全に痛みを取り除くことができます。

四、ダボ

ダボは、RPC(リモートプロシージャコールプロトコル)、リモートサービス呼び出しプログラム、サービスおよびSOAガバナンスプログラムの高い性能と透明性を提供し、分散型サービス・フレームワークです。簡単に言えば、ダボは、サービス・フレームワークである需要を分散していない場合は、実際には、我々は必要としない、そして分散する場合にのみ、そのような分散型サービスフレームワークのためのダボ需要を持っており、基本的にサービスと呼ばれていますもの、それは、リモートサービスの呼び出し用の分散フレームワークを意味します。

1、透明リモートメソッドの呼び出し、任意の侵入APIなしで、ローカルメソッド呼び出しリモートメソッドだけの簡単な設定を呼び出すのと同じ。

図2に示すように、代替的に等F5ハードウェアロードバランサは、コスト、単一の点を低減することができるネットワークを含むソフト負荷分散とフォールトトレランス。

3、自動サービス登録と発見、死んサービスプロバイダアドレス、IPアドレス、レジストリベースのクエリインタフェース名サービスプロバイダを記述することはもはや必要性、および円滑なサービス・プロバイダーを追加または削除することができます。

ノードの役割の説明:

  • プロバイダ:サービスプロバイダ暴露。
  • 消費者は:サービスの消費者は、リモートサービスを呼び出します。
  • レジストリ:レジストリサービスの登録と発見。
  • モニター:通話時間の統計的なサービスは、監視センターの通話時間を調整します。
  • コンテナ:実行コンテナサービス。

五、Mavenの

Mavenプロジェクト管理およびビルドの自動化ツール、より多くの開発者は、jarファイルでプロジェクトを管理するためにそれを使用します。しかし、私たちのプログラマのために、我々は、最も懸念しているビルド機能へのプロジェクトです。

六、RabbitMQの

メッセージキューは、非同期処理をした、いくつかすぐに抽出復帰し、時間のかかる操作せずに、プロジェクトで通常であり、この処理の非同期要求が大幅にそれによってシステムのスループットを向上させ、サーバーの応答時間を節約します。

RabbitMQのAMQPは、メッセージキューサーバーは、Erlangで実装信頼性の高い高同時実行です。

アーランは、動的プログラミング言語の種類の関数です。アーランに対応し、それぞれがプロセスの間、俳優Erlangのプロセスに対応するメッセージ・パッシングによって通信します。比較すると、共有メモリ、ロックの直接費用の除去は、(ロック基本となる実装のErlang仮想マシンのアプリケーションを考慮していない)直接プロセス間メッセージによってもたらされるメリットを伝える渡されます。

AMQP(アドバンスト・メッセージ・キュープロトコル)仕様は、メッセージシステムを定義します。この仕様は、どのように、様々なサブシステムが相互作用するメッセージ分散システムを記述しています。

七、Log4jの

OFF、FATAL、ERRORに分け、優先度、WARN、INFO、DEBUG、ALLか、ログのレベルを定義します。

八、Ehcacheの

Ehcacheのが速いなど、リーン、とプロセスの純粋なJavaのキャッシングフレームワークであり、HibernateはデフォルトのcacheProviderです。Ehcacheのは、Javaのキャッシュを分散し、オープンソースで広く使用されています。主に一般的なキャッシング、Java EEおよび軽量コンテナの。これは、メモリとディスクストレージ、キャッシュローダー、キャッシュの拡張、キャッシュ例外ハンドラ、バッファGZIPサーブレットフィルタ支持RESTとSOAP APIの特性を有しています。

利点:

1、速いです

2、シンプル

3、キャッシュポリシーの様々な

4、二つのデータキャッシュがある:メモリーやディスク、容量の問題を心配する必要はありません

5は、キャッシュされたデータは、仮想マシンを再起動する過程でディスクに書き込まれます

6、RMIにより、等分散APIキャッシュに挿入することができます

7、リスニングソケットのキャッシュとキャッシュマネージャを持ちます

図8は、キャッシュ・マネージャは、複数のインスタンスをサポートし、キャッシュ領域の複数の一例

9、Hibernateはキャッシュ実装を提供します

短所:

1は、非常に占有するディスク容量ディスクキャッシュの時間を使用しています:アルゴリズムは単純なアルゴリズムキャッシュの効率にもリード線が非常に高いシンプルDISKCACHE、あるためです。これは、直接記憶のちょうど追加要素です。このため、非常に迅速に検索要素。あなたは非常に頻繁にアプリケーションにDISKCACHEを使用している場合は、ディスクがいっぱいすぐになります。

2は、データのセキュリティを保証することはできません:ファイルの競合は、その後、キャッシュを再構築した場合、突然のjavaを殺すとき、それは紛争であってもよいし、Ehcacheのソリューションです。キャッシュ時間データの必要性を保存するためにこれは不利かもしれません。もちろん、キャッシュは単純に加速するが、データのセキュリティを保証することはできません。あなたが保存されたデータのセキュリティを確保したい場合は、Bekeley DB Java Editionのバージョンを使用することができます。これは組み込みデータベースです。収納スペースの安全性と利用を確保するために。

ナイン、Redisの

Redisのキーと値のストレージシステムです。ハッシュ(ハッシュタイプ) - と同様にMemcachedのは、文字列(文字列)、リスト(一覧)、SET(セット)、ZSET(順序集合ソートセット)を含む、比較的保存された値の型をサポートしています。これらのデータ型は、プッシュ/ポップ、追加/削除し、交差点や労働組合に、その差豊かな操作をサポートしており、これらの操作はアトミックです。これに基づき、仕分けの異なるさまざまな方法をサポートするのRedis。memcachedのと同じように、効率性を確保するために、データはメモリにキャッシュされています。Redisの差は、定期的にディスクに書き込まれたデータで更新されたり、追加のログファイルを書き込む動作を変更するために、そしてこれに基づいてマスタースレーブ(マスタとスレーブ)の同期を実現します。

Redisのは、唯一の永続化のためのディスクを使用して、メモリに完全データベース。多くの重要なデータストレージと比較すると、Redisのデータ型の富を持っています。Redisのは、任意の数のサーバーからデータをコピーすることができます。

1.2、Redisの利点:

(1)非常に速い:Redisの非常に速く、毎秒毎秒81000+たレコードについて、11万の収集を行うことが可能。

豊富なデータ型の(2)のサポート:Redisのは、ほとんどのほとんどの開発者がすでにリスト、セット、順序集合、ハッシュデータ型のように、知っているサポートされています。これは、我々は問題がより良い、そのデータ型によって対処することができるか知っているので、それは非常に簡単で、様々な問題を解決することができます。

(3)操作は原子性、次のとおりです。すべての操作は、2回のRedisのサーバークライアントアクセス後の値が同時に更新される場合ことを保証Redisの原子、です。

(4)多機能ユーティリティ:Redisのは、例えば、複数のキャッシュに使用することができる多機能ツールであるメッセージ、キューが(Redisのネイティブサポートは、パブリッシュ/サブスクライブ)を使用し、そのようなWebアプリケーションのセッションのような任意の短期的なデータ、アプリケーション、 Webページには、カウントを打ちます。

1.3、Redisの短所:

(1)単一のねじ

(2)メモリ消費量

十、Shiro

Apacheの史郎簡素化、認証と承認に設計されたJavaのセキュリティフレームワークです。史郎するJavaSEとJavaEEのプロジェクトで使用することができます。主に、認証、許可、セッション管理と企業の暗号化に対処するために使用されます。史郎の特定の機能ポイントは以下のとおりです。

(1)認証/ログインは、ユーザが適切なIDを持っていないことを確認してください。

ユーザーが役割を持っていることを確認します。ユーザーは、このような一般的なようなことを行うことができるかどうかを決定することであり、(2)は、ユーザが権限を認証したことを確認し、確認するためにその権限を承認しました。またはきめ細かいユーザーがリソースに対するアクセス権を持っているかどうかを確認します。

(3)セッション管理は、1つのセッションでユーザがログインした後、終了が存在しない場合には、セッション内のすべての情報です。セッションは、通常のJava SE環境であることができ、それをWeb環境としてすることができ;

そのような代わりの平文を格納するデータベースに格納された暗号化パスワードとして(4)暗号化、安全なデータ、。

(5)Webサポートは非​​常に簡単にウェブ環境に統合することができます。

キャッシュ:キャッシュをユーザーが役割と、そのユーザーの情報、ログインする、などの/パーミッションが、これは効率を高めることができるたびにチェックする必要はありません。

スレッド内のそのようなオープン別のスレッドを確認する(6)しろサポートマルチスレッドアプリケーション、権限が自動的に過去に増殖させることができます。

(7)テストのサポートを提供します。

(8)ユーザがアイデンティティ(それらが許可されている場合)、他のユーザへのアクセスになりすまし可能。

(9)つまり、これは非常に共通の特徴である、私を覚えている最初のログイン後、次の時間が記録され戻ってきません。

テキスト記述は、猿が忠実に完全に特定の機能の意味を理解しないことがあります。ここでは、例えばログイン認証を、忠実にAPEする四郎の使用を記載しています。猿の友人が遅すぎるその使用法の下に到達するために行くために使用される他のファンクションポイント、用として。

XI、デザインパターン

これは本当に自己軽視のフレームワーク、ではありませんが、ブロガーは、デザインパターンの考え方を知ることが必要であると考えています。

思想:

オープンクローズ原理:

これは、開口部と拡張のためのオープンクローズの原則であるが、変更のため閉鎖します。プログラムを展開する必要がある場合、元のコードを変更しません。

プログラミングのためのインターフェースは、プログラミング・インターフェースのために、抽象に依存特定に依存するものではありません。

合成ポリマー/の代わりに、継承を利用するためにマナー。

エンティティは、エンティティ及び他の、そのようなその独立した機能モジュール間の相互作用を最小限にすべきです。

界面分離複数の、単一のインターフェースを使用するよりも優れています。

リヒター置換原則:

(1)能力のサブクラスは、親クラス、メソッド、すなわち、親クラスを使用することができる、サブクラスを使用することができるよりも大きくなければなりません。

(2)戻り値は、同じ理由です。親クラスのメソッドがリストを返すと仮定し、サブクラスは当然のものとすることができるのArrayListを返します。親クラスのメソッドは、ArrayListのを返す場合、サブクラスがリストを返し、非論理的です。ここでは、戻り値のサブクラス能力は親クラスよりも小さくなっています。

(3)は、例外がスローされる事情があります。親クラスのメソッドが例外サブクラス宣言宣言することができます任意のサブクラスのメソッドを投げます。しかし、あなたは親クラスが投げる例外を宣言していない宣言することはできません。

出典:ウェブマスター

おすすめ

転載: www.cnblogs.com/1994jinnan/p/12287821.html