web-dev-qa-db-ja.com

Spring web.xml <context-param>および<listener>タグに関する情報(Hello Worldの例を参照)

私はSpringMVCWorldではまったく新しいです。今日は、STSによって生成された単純な「HelloWorld」の例を学習しています。ファイル---> Springテンプレートプロジェクト---> SpringMVCプロジェクト

Web.xmlには、DispatcherServletの宣言と、それによって処理されるリクエストマッピングがあります...ここまではすべて問題ありません

Web.xmlには、コードのこの部分もあります。

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

ContextLoaderListenerに関するSpringのドキュメントを読むこのクラスがリスナーのbootstrapを実行して、SpringのルートWebApplicationContextを起動することを読みましたが、正確にはどういう意味ですか?

もう1つの疑問は、コンテキストに渡すcontextConfigLocationパラメーターについてです...正確には何ですか? /WEB-INF/spring/root-context.xmlファイルを開くと、構成が含まれていないようです...テンプレートプロジェクトの作成プロセスによって自動的に作成された無効な構成ファイルですか? Springプロジェクトにはどのような構成を含める必要がありますか?

これらのタグを削除してもプロジェクトは正常に実行されるため、このHelloWorldプロジェクトではタグとタグは使用されていないと思います。

15
AndreaNobili

ContextLoaderListenerは、Springコンテナを起動するクラスです。基本的に、すべてのSpringアプリケーションは、いくつかのBeanとワイヤリング(どのBeanが相互に依存しているかの宣言型記述)で構成されています。この説明は歴史的にXMLで書かれていました(最近では注釈、Java構成、CLASSPATHスキャンなど)があります)

Springコンテナがなければ、BeanはJavaクラスであり、Spring構成ファイルは役に立たないXMLドキュメントです。ContextLoaderListenerはそのファイルを読み取り、クラスを見つけてインスタンス化し、ワイヤリングします。その後、豆はコンテナ内に配置されます。

さらに、ContextLoaderListenerは、アプリケーションのシャットダウン時にコンテキストを閉じます(クリーンアップが必要な場合は、すべてのBeanをシャットダウンします)。

35