1. 定义多个handel mapping
Spring 的org.springframework.core包里面有个Ordered的接口,这个接口有个未实现的方法是public int getOrder();我理解这个接口的意义就是让实现它的类有者顺序关系,Spring提供的所以handelmapping类都是实现了Ordered接口的,这说明了所有的handelmapping类都有着顺序关系,所以在同一个WebApplication中可以定义多个handelmapping,每个handelmapping都有自己的order值,值越小的优先权越大,系统先会用优先权最大的的去做mapping,如果找不到资源的话,再用下一个级别的mapping去找!
例如:
<bean id="beanNameUrlMapping" class="org.springframework.web.
servlet.handler.BeanNameUrlHandlerMapping">
<property name="order"><value>1</value></property>
</bean>
<bean id="simpleUrlMapping" class="org.springframework.web.
servlet.handler.SimpleUrlHandlerMapping">
<property name="order"><value>0</value></property>
<property name="mappings">
…
</property>
</bean>
以上的例子表示simpleUrlMapping的优先权大于beanNameUrlMapping,系统先用simpleUrlMapping去找资源,找不到再用beanNameUrlMapping去找一次。
2. 定义多个ViewResolver
和定义handel mapping类似,也是通过定义ViewResolver的order属性来定义ViewResolver的优先权,但我不理解的是ViewResolver并没有实现Ordered接口,不知道他的order属性从何而来。
Spring in Action给出的例子:
<bean id="viewResolver" class=
"org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix"><value>/WEB-INF/jsp/</value></property>
<property name="suffix"><value>.jsp</value></property>
<property name="order"><value>1</value></property>
</bean>
<bean id="xmlFileViewResolver" class=
"org.springframework.web.servlet.view.XmlFileViewResolver">
<property name="location">
<value>/WEB-INF/views.xml</value>
</property>
<property name="order"><value>2</value></property>
</bean>