Spring MVCの一般的なインタビューの質問

Springフレームワークに基づくWebアプリケーションで、Springのアプリケーションコンテキスト構成ファイルはどのようにapplicationgContext.xml自動的に読み込まれますか?

Webプロジェクトを実行するとき、アプリケーションサーバー(JBoss、Tomcatなど)は、最初にプロジェクトソースパス内のweb.xmlファイルを読み取り、その中の構成を解析し、構成を見つけますContextLoaderListener。そのためContextLoaderListenerクラスのcontextInitializedメソッドが実行され、このinitWebApplicationContext()メソッドでメソッドが呼び出されます。メソッド名によれば、このメソッドはWebApplicationContextを初期化するために使用されていることがわかります。initWebApplicationContext()内部実装方法以降コードに基づいてweb.xml構成されたcontextConfigLocation指定された属性をロードするためにapplicationContext.xmlSpringコンテナ初期設定ファイルに従ってファイルを。

そこweb.xmlに設定contextConfigLocationパラメータがない場合applicationgContext.xmlファイルをロードできませんか?

構成contextConfigLocationパラメータがない場合、アプリケーションはデフォルト/WEB-INF/applicationContext.xmlアプリケーションのルートディレクトリでファイルを検索します。つまり、これはデフォルトでロードされるファイルパスです。

このWebアプリケーションでのWebApplicationContextの初期化が完了したら、ServletContextと何をする必要がありますか?

initWebApplicationContextあろう初期化メソッドの内部contextに保存ServletContextに保たれ、特に、Map型属性、keyでありWebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTEvalueオブジェクトWebApplicationContextの特定のインスタンスがあります。

これをコードServletContext取得したい場合はWebApplicationContext、どうすればよいですか?

Springフレームワークは、WebApplicationContextUtilsこのツールクラスのgetWebApplicationContextメソッドを通じて取得できるツールクラスを提供します

たった今ServletContext、それは何のために使われますか?

ServletContext一部のメソッドはServletServletコンテナとの通信を容易にするために定義されいます。Webアプリケーションでは、Servletそれらすべてが共通のメソッドを共有します。Spring ServletContextがWebアプリケーションと組み合わせて使用​​される場合、SpringコンテナServletContextApplicationContext保存されServletContextます。 Mapプロパティ内。

そこを理解していたweb.xml中でListenerFilterおよびServlet初期化順序それ?

まず、<listener>ラベルで宣言されたリスナークラスをインスタンスcontextInitialized()化し、リスナークラスインスタンスオブジェクトのメソッドを呼び出し、アプリケーションコンテキストデータを初期化します。次に、<filter>ラベルで宣言されたフィルタークラスをインスタンス化し、フィルタークラスインスタンスオブジェクトのメソッドを呼び出しますinit()<servlet>タグ内でタグが使用されている場合、<load-on-startup>最小値から最大値の順にServletインスタンス化さ、対応するinit()メソッドが呼び出されます。

といえばServlet、Spring MVCのDispatcherServlet誰か知っていましたか?その実装原理について教えてください。

DispatcherServletSpringMVCのコアディストリビューターであり、要求の分散を実装し、要求を処理するためのエントリポイントです。これは1 Servletです。アプリケーションが起動すると、DispatcherServlet初期化によってinitメソッドが実行DispatcherServletます。ソースコード内にあるinitメソッドはそれを継承しますHttpServletBean。この初期化メソッドでは、WebApplicationContextオブジェクトがインスタンス化contextServletContext、初期化オブジェクト格納されてServletSpringコンテナに関連付けられます。では方法、そのようなファイルのアップロードポリシー、URLリクエストの処理戦略など様々な要求処理戦略を、初期化マッピング処理戦略、例外処理戦略、これらの戦略の実装のほとんどは開始論理的表示の検索を、見つけることができませんでしたリロードの場合、初期化、さまざまなリクエスト処理ストラテジーの登録、クラスの処理など、同じディレクトリ内のさまざまなストラテジーDispatcherServletonRefreshWebApplicationContextDispatcherServletDispatcherServlet.propertiesHandlerMapping

具体的には、DispatcherServletリクエストの配布はどのように機能しますか?

まず、Spring MVCフレームワークは、起動時にSpringコンテナー内のすべてのBeanを走査し、注釈付き@Controllerまたは@RequestMapping注釈付きクラスのメソッドを走査し、クラスとメソッドの@RequestMapping注釈値マージし注釈@RequestMappingの関連パラメーター値(などvaluemethod等)、パッケージRequestMappingInfo、本Controller例では、方法及びパッケージにメソッドパラメータ情報(等タイプ、注釈、) HandlerMethodおよびその後にRequestMappingInfoなどkeyHandlerMethodするvalueまでに保つMapの構造handlerMethods

次に、@RequestMappingの注釈value(即ち、経路要求)の値であることを、採取しurl、そしてその後urlkey順番RequestMappingInfovalueまで堆積物で、Map構造urlMap性。

クライアントは、要求に応じて、要求を送信するとURLするurlMap見つけ、見つけRequestMappingInfo記載次いで、及びRequestMappingInfohandlerMethods対応を見つけるために、ルックアップHandlerMethodその後、HandlerMethodカプセル化されHandlerExecutionChain、次に、すべての容器を反復HandlerAdapterこの要求をサポート見つけ、実装クラスHandlerAdapter、などRequestMappingHandlerAdapter実行し、 Spring MVCインターセプターのフロントメソッド(preHandleメソッド)、次にリクエストパラメーターを解析して変換し、(リフレクションを使用して)特定のController対応するメソッドを呼び出してModelAndViewオブジェクトを返し、インターセプターのポストメソッド(postHandleメソッド)を実行して結果を返します処理を実行し、最後にafterCompletionメソッドを実行します。

公開された94元の記事 ウォンの賞賛0 ビュー722

おすすめ

転載: blog.csdn.net/qq_46578181/article/details/105458281