ホームページ >よくある問題 >ssmフレームワークの原理とプロセスは何ですか?

ssmフレームワークの原理とプロセスは何ですか?

晓曦&sea
晓曦&sea転載
2020-07-18 17:49:1421550ブラウズ

ssm フレームワークの原理は、Spring、SpringMVC、および MyBatis を、比較的単純なデータ ソースを持つ Web プロジェクト用のフレームワークとして統合することです。そのプロセスは次のとおりです。ハンドラー マッピングはリクエストに従って対応するハンドラーを検索し、ビジネス ロジックを呼び出して処理し、ビューの解析を実行します。

ssmフレームワークの原理とプロセスは何ですか?

SSM フレームワークの紹介
SSM (Spring SpringMVC MyBatis) フレームワーク セットは、2 つの Spring と MyBatis で構成されます。オープンソース フレームワークと統合されています (SpringMVC は Spring の一部です)。 SSM は、単純なデータ ソースを含む Web プロジェクトのフレームワークとしてよく使用されます。

SpringMVC
SpringMVC は、プロジェクト内のユーザー リクエストをインターセプトします。そのコア サーブレットである DispatcherServlet は、仲介者の役割を引き受け、HandlerMapping を通じてユーザー リクエストをコントローラーに照合します。コントローラーは、対応する特定のサーブレットによって実行される操作です。リクエスト。
SpringMVC フレームワーク実行プロセス

ユーザーはリクエストを DispatcherServlet に送信します。
DispatcherServlet はリクエストを受け取り、1 つ以上の HandlerMapping をクエリして検索して処理します。リクエストハンドラ;
HandlerMapping はリクエストに従って対応するハンドラを見つけ、Handler オブジェクトを生成して DispatcherServlet に返します;
DispatcherServlet は HandlerAdapter を通じて Handler を呼び出します;
Handler (Controller) はビジネス ロジック (サービス) を呼び出します;
HandlerAdapter は、Handler の処理結果 ModelAndView を DispatcherServlet に返します;
DispatcherServlet は 1 つ以上の ViewReslover (ビュー リゾルバー) をクエリし、指定された ViewReslover に ModelAndView を渡します;
After ViewReslover が解析され、特定の View が DispatcherServlet に返されます。
DispatcherServlet が View をレンダリングします (モデル データをビューに設定します)。
DispatcherServlet がユーザーに応答し、View が結果をクライアントに表示します。
プロセスは大まかに以下に示すとおりです:

ssmフレームワークの原理とプロセスは何ですか?

DispatcherServlet は Spring MVC 全体の中核であり、HTTP リクエストの受信、さまざまなコンポーネントの編成と調整を担当します。
a. 特定の形式に一致する URL リクエストをインターセプトする;
b. DispatcherServlet コンテキストに対応する WebApplicationContext を初期化し、DispatcherServlet の WebApplicationContext に関連付けます。ビジネス層と永続化層;
c. 初期化 Spring MVC の各コンポーネントは DispatcherServlet にアセンブルされます。
Spring
Spring は、プロジェクト全体で Bean を組み立てる大きな工場のようなもので、構成ファイルで、コンストラクターを呼び出すための特定のパラメーターの使用を指定できます。エンティティクラスのオブジェクトをインスタンス化します。プロジェクトにおける接着剤とも言えます。
Spring の核となる考え方は IOC (Inversion of Control) です。これは、プログラマが明示的にオブジェクトを新規作成する必要がなくなり、Spring フレームワークにすべてを任せることを意味します。 IOC コンテナは、アプリケーション内のオブジェクトのインスタンス化、検索、構成、およびこれらのオブジェクト間の依存関係の確立を担当します。 Spring の目的は、オブジェクト (モジュールとモジュール) 間の関係がコードを通じて関連付けられるのではなく、構成クラスの記述を通じて管理されるようにすることです (Spring は、これらの構成に基づいてリフレクションを通じて内部でオブジェクトを動的に組み立てます)。
IOC コンテナは、IOC コンテナの基本機能を提供する org.springframework.beans パッケージ内の BeanFactory インタフェースを表し、 org.springframework.context パッケージの ApplicationContext インタフェースは BeanFactory を拡張し、Spring との統合も提供します。 AOP、国際化処理、イベント伝播、およびさまざまなレベルのコンテキスト実装の提供。
簡単に言えば、BeanFactory は IOC コンテナの最も基本的な機能を提供し、ApplicationContext はエンタープライズレベルの機能のサポートを追加します。 ApplicationContext は BeanFactory を完全に継承するため、BeanFactory のセマンティクスは ApplicationContext にも適用されます。
春のランニングプロセス

設定ファイル、ApplicationContext インターフェイスをロードします。構成ファイル内の Bean 情報は HashMap にロードされます。Bean には通常、ID、クラス、プロパティなどが含まれます。Bean の ID は HashMap 内のキーに対応し、HashMap 内の値が Bean です。
getBean メソッドを呼び出します。getBean は、applicationContext.xml ファイル内の Bean を取得するために使用されます。パラメータは Bean の ID です。一般に、対応するビジネス層(インターフェース)への変換が強制されます。
ビジネス層(インターフェース実装)のメソッドを呼び出します。
Bean 内のコンテンツはどのように注入されるのでしょうか?簡単に言うと、Bean がインスタンス化されるとクラスも実際にインスタンス化され、リフレクションを通じてクラス内の set メソッドを呼び出し、HashMap に保存されているクラス属性をクラスに注入します。これにより、Java の本来の場所、object.property、object.method に戻ります。
Mybatis
Mybatis は jdbc のカプセル化であり、データベースの基礎となる操作を透過的にします。 Mybatis の操作はすべて sqlSessionFactory インスタンスを中心に展開します。 Mybatis は、構成ファイルを通じて各エンティティ クラスの Mapper ファイルに関連付けられており、Mapper ファイルには、各クラスに必要な SQL ステートメントをデータベースにマッピングするように構成されています。データベースと対話するたびに、sqlSessionFactory を通じて sqlSession を取得し、sql コマンドを実行します。
Mybatis は、MapperProxy を通じて dao を動的にプロキシします。つまり、自分で作成した dao 内のメソッドを実行するとき、対応する MapperProxy が実際にプロキシとして機能します。
Mybatis の動作原理

設定ファイルの読み込み
パラメータ マッピング設定、実行 SQL ステートメント、結果として得られるマッピング構成はメモリに保存されます。
SQL 解析
API インターフェース層が呼び出しリクエストを受信すると、受信 SQL の ID と受信オブジェクト (Map/JavaBean または基本データ型の可能性があります) を受け取り、Mybatis は対応する1 つは SQL. MappedStatement の ID に基づいて行われ、その後、受信パラメータ オブジェクト MappedStatement に従って解析され、解析後、最終的に実行される SQL ステートメントとパラメータを取得できます。
SQL 実行
最終的な SQL とパラメータをデータベースに取得して実行し、データベースの操作結果を取得します。
結果マッピング
マッピング構成に従ってデータベースの操作結果を変換し、HashMap/JavaBean または基本データ型に変換し、最終結果を返します。

以上がssmフレームワークの原理とプロセスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。