web-dev-qa-db-ja.com

Spring:web.xmlの名前空間とcontextConfigLocationの初期化パラメーター

Spring MVCのドキュメントを読んでいますが、initパラメーターに関する質問があります。問題があればSpring 3.2を使用しています。 contextConfigLocationと名前空間の違いは何ですか? contextConfigLocationは、コンテキストクラスがXML定義を見つけることができるフォルダーを指定するためだけのものであり、名前空間属性はファイル名を指定するためのものですか?

<servlet>
        <servlet-name>AppServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>WEB-INF</param-value>
        </init-param>
        <init-param>
            <param-name>namespace</param-name>
            <param-value>application-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

これは正しいです? /WEB-INF/application-context.xmlを使用する必要がありますか?また、パスを指定する必要がありますか?

56
LuckyLuke

LuckyLukeの答えには多くの有用な情報があると思いますが、質問には答えていません。特に、「namespace」および「contextConfigLocation」パラメーターはどのように連携するのでしょうか?

具体的な答えを見つけることができる唯一の場所は、ソースコードです。

  • namespace paremeterは、構築に使用されるカスタム名前空間を設定しますdefault context config location
  • contextConfigLocationパラメーターは、ネームスペースから構築されたデフォルトの場所に依存する代わりに、コンテキスト構成の場所を明示的に設定します
4
Sava Jcript

contextConfigLocationと名前空間の違いは何ですか? contextConfigLocationは、スプリング構成ファイルのパスを指定するために使用されます。つまり、初期化されます。名前空間は、Spring MVCのDispatcherServletのパスと名前を指定するために使用されます。デフォルトは[Dispatcher_name]-servlet.xmlです。以下に例を示します。

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>namespace</param-name>
        <param-value>config/spring-mvc</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

Springは/WEB-INF/config/spring-mvc.xmlのパスでmvc configとして使用されるファイルを検索します。
contextConfigLocationは、コンテキストクラスがXML定義を見つけることができるフォルダーを指定するためだけのものです

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/config/app-*.xml</param-value>
</context-param>

上記のコードは、Springを起動するアプリケーションが、WEB-INF/configディレクトリで名前が「app-」で始まり「.xml」で終わるすべてのファイルをロードすることを示しました。

/ WEB-INF/application-context.xmlを使用する必要がありますか?パスを指定する必要がありますか?
[。 INFディレクトリ)および名前(拡張子を含まない)。
お役に立てることを願って:)

3
Hunter Zhao