例えば、ServletWebServerApplicationContext用のアプリケーション・コンテキストを開始するためのスプリングMVCサーブレットは、方法GenericWebApplicationContext、主に書き換えpostProcessBeanFactory()、リフレッシュ()、onRefresh()、finishRefresh()、OnCloseの()メソッドの大部分を継承しました。
スタートプロセス
()リフレッシュから見ると、実行順序を書き換える方法:postProcessBeanFactory()、onRefresh()、finishRefresh()。
1、postProcessBeanFactory()
- ポストプロセッサWebApplicationContextServletContextAwareProcessorを追加
- 自動組立ので、無視インタフェースServletContextAware
- スコープ登録Webアプリケーション
2、onRefresh()
- OnRefresh親クラス()メソッドを呼び出します
- Webサーバーを作成します。
バネ仕掛けのコンテナ設定クラスServletWebServerFactoryConfiguration @Configuration注釈、それは条件付きの異なるWebサーバファクトリクラスを注入します:、Tomcatの/突堤/アンダートウデフォルトの条件、TomcatServletWebServerFactory、tomcatServletWebServerFactoryの名前を注入することができます。
onRefresh()は、Webサーバーを作成する場合、最初たBeanFactory、すなわち上記TomcatServletWebServerFactoryからビーンのServletWebServerFactory種類を取得します。このファクトリクラスのメソッドを使用してpublic WebServer getWebServer(ServletContextInitializer... initializers)
TomcatWebServerを作成するには、このメソッドは、主にTomcatWebServerを目指しているTomcatインスタンスを作成します。また、パラメータがパラメータとして渡されてもよい方法の機能ServletContextInitializerインタフェースであることに注意し、初期化TomcatWebServerは、Tomcat.start()を起動サーバーをコールし、非同期的に(関数インターフェイス実装クラス、すなわち実行OnStartupを行います)の方法。
Tomcatインスタンスを作成して開始されたとTomcat関連のコンテンツ、つまりは、サーバー、サービス、コネクター、エンジン、としてTomcatの関連コンポーネントの作成であるホスト、コンテキスト、ラッパー、ライフサイクルおよびその他のコンポーネント。
Tomcatがされ、そのライフサイクル状態を変更するには、このステップの初期化作業を完了されます。NEW
- > INITIALIZING
- >INITIALIZED
、INITIALIZED
それは状態を初期化していると述べました。
3、finishBeanFactoryInitialization(たBeanFactory)
たBeanFactory名はrequestMappingHandlerMapping豆から取得し、そして)ビーン、実行中にその実施InitializingBean.afterPropertiesSetインターフェースのメソッドを(初期化され、プロセスは、すべての利用可能な豆をループ、または@Controller @RequestMapping反射技術を使用して、クラスを注釈付き見つけますリクエストとURLキャッシュマッピング関係のこれらのクラスのそのメソッドを横断。
4、finishRefresh()
本当に完全なスタートのTomcat、そのライフサイクルステータスの変更:INITIALIZED
- > STARTING_PREP
- > STARTING
- > STARTED
、それは意味成功開始。
要求プロセス
リクエストTomcatを受け取ります
- ブラウザ入力http://127.0.0.1:8080/test、アドレス127.0.0.1、ポート番号8080は、エンドポイントは、要求、及びプロセッサプロセッサの処理要求を受信します。
- 要求CoyoteAdapterにより、アダプタ・プロセッサは、今度はエンジン - >ホスト - >、コンテキスト>ラッパーを見つけるマッパーを、マッピングキャッシュからのパスを見つけます
- 最初の呼び出しの後のフィルタチェーンれるFilterChain、フィルタ、サーブレットの実行
- 完成し、その後、ターン応答レスポンスで返さ
DispatcherServlet
Tomcatのサーブレットコンテナソケットとして監視要求と要求のマッピングを担当し、かつ特定のサーブレットの処理に転送。Spring MVCのは、クラスのDispatcherServletの処理要求のスケジュールを担当し、非常に重要であり、以下に示すように、要求を処理するために、その実装の継承サーブレットをのDispatcherServletを使用して、その春のMVCアプリケーションでは、サーブレットの実装です。
取得した実行処理要求をのDispatcherServlet