Spring XML处理程序映射

时间:2014-12-09 22:53:59

标签: java spring spring-mvc

可以通过XML配置在SimpleUrlHandlerMapping或其他XML handlerMapper中指定请求方法类型吗?并调用控制器方法??

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
   <property name="order" value="1" />
   <property name="mappings">
     <props>
       <prop key="/welcome.htm" >clinicController</prop> 
       // something like <prop key="/welcome.htm" method="GET" controllerMethod="someMethod1 ..."
       <prop key="/vets.htm">clinicController</prop>  
       // something like <prop key="/vets.htm" method=PUT method="GET" controllerMethod="someMethod2 ..."
       <prop key="/meds.htm">clinicController</prop>  
       // something like <prop key="/meds.htm" method=POST method="GET" controllerMethod="someMethod3 ..."
     </props>
   </property>
</bean>

我试图找到答案,但我什么都找不到。我更喜欢使用XML配置而不是注释。但是在注释中可以使用

@RequestMapping(value = "/welcome.htm", method = RequestMethod.GET)

1 个答案:

答案 0 :(得分:0)

你不能。 SimpleUrlHandlerMapping实际上是一个传统的Spring HandlerMapping实现,它主要用于旧式2.5 mvc之前的模型。在该模型中,您必须扩展特定的控制器类,因此预先配置了行为(即,对每个请求强制执行每种控制器类型的标准工作流)。换句话说,GET或POST方法是由您可能覆盖的预定义抽象或具体方法处理的。 因此,这种模式使方法类型映射变得多余。

在Spring 3.1之前,你甚至可以在某种程度上混合这两种模式。可以使用SimpleUrlHandlerMapping将控制器bean映射到某个url前缀,并通过方法类型(或通过其余的url部分或参数等)进一步细化,通过使用注释向控制器方法。这是可能的,因为bean和方法映射是在不同的点上进行的。 Spring引用是明确的:

  

在Spring 3.1之前,类型和方法级请求映射是   在两个不同的阶段进行检查 - 首先选择一个控制器   DefaultAnnotationHandlerMapping和要调用的实际方法   由AnnotationMethodHandlerAdapter缩小了第二个范围。同   Spring 3.1中的新支持类   RequestMappingHandlerMapping是决策的唯一地方   关于哪个方法应该处理请求。考虑到   控制器方法作为具有映射的唯一端点的集合   对于从类型和方法级别@RequestMapping派生的每个方法   信息。

一般来说,今天注释驱动的mvc是首选方式,并且比旧方式更灵活。由于像IDE这样的STS-现在提供了在一个视图中检查所有处理程序映射的方法,我无法看到任何真正的缺点。当然这只是我的观点,所以你可以放心地忽略它,但至少要重视每种方法的优点。