Spring MVCでハンドラマッピングの優先度を設定する

多くの場合、Spring MVC開発で複数のハンドラマッピング戦略を混在させることができます。

例えば、 ControllerClassNameHandlerMapping を使用して、すべてのコンベンションハンドラマッピングをマップします。 SimpleUrlHandlerMapping 他の特別なハンドラマッピングを明示的にマッピングします。

<beans ...>

   <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
      <property name="mappings">
        <value>
           /index.htm=welcomeController
           /welcome.htm=welcomeController
           /main.htm=welcomeController
           /home.htm=welcomeController
        </value>
      </property>
      <property name="order" value="0"/>
   </bean>

   <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
      <property name="caseSensitive" value="true"/>
      <property name="order" value="1"/>
   </bean>

   <bean id="welcomeController"
      class="com.mkyong.common.controller.WelcomeController"/>

   <bean class="com.mkyong.common.controller.HelloGuestController"/>

</beans>

上記の場合、競合を引き起こさないように、ハンドラーマッピングの優先順位を指定することが重要です。優先度は、 order プロパティを使用して設定できます。ここでは、低次の値の優先度が高くなります。

ソースコードをダウンロードする

ダウンロードする - SpringMVC-HandlerMapping-Priority-Example.zip (8 KB)

参考文献

  1. link://spring-mvc/spring-mvc-controllerclassnamehandlermapping-example/[ControllerClassNameHandlerMapping

例]。リンク://spring-mvc/spring-mvc-simpleurlhandlermapping-example/[SimpleUrlHandlerMapping

例]