spring为我们提供了多种处理器映射的支持,比如org.springframework.web.servlet.handler.SimpleUrlHandlerMapping、
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping、org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping,等等。
我用SimpleUrlHandlerMapping和DefaultAnnotationHandlerMapping比较多,其它的基本没用过。
最近在项目中使用了BeanNameUrlHandlerMapping,发现有这样一个现象:
如果没有明确声明任何处理器映射,spring会默认使用BeanNameUrlHandlerMapping,但如果明确声明了其它的处理器映射,则需要将BeanNameUrlHandlerMapping明确声明出来,而且在每个包含被映射的bean的配置文件中都要加入BeanNameUrlHandlerMapping,否则会抛异常:
WARN - No mapping found for HTTP request with URI [/BOSS_SUPPORT/service/httpService] in DispatcherServlet with name 'backend'
2010-01-08 11:14:57 [backend]:253 ERROR - Servlet.service() for servlet backend threw exception
java.io.IOException: Did not receive successful HTTP response: status code = 404, status message = [Not Found]
从异常看,报告没有找到相应的映射地址,这个现象很是奇怪,也许是我没有搞清楚,不过在网上也没有找到相关的说明,希望高手指点。
相关配置文件如下:
主配置文件a.xml:
<!-- 定义注解URL映射处理器 -->
<bean id="urlMapping"
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors" ref="interceptors" />
<property name="order" value="1"></property>
</bean>
<bean id="beanNameUrlHandlingMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="interceptors" ref="interceptors" />
<property name="order" value="2"></property>
</bean>
包含映射的一个配置文件b.xml:
<bean id="httpService" name="/httpService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service">
<ref bean="ucService" />
</property>
<property name="serviceInterface" value="com.netqin.baike.service.UcService"/>
</bean>
以上两个文件都在服务器启动时加载,虽然a.xml中已经声明了BeanNameUrlHandlerMapping,但如果b.xml中没有声明BeanNameUrlHandlerMapping,系统就会抛异常。
分享到:
相关推荐
分别是:RequestMappingHandlerMapping与BeanNameUrlHandlerMapping实现组成结构:RequestMappingH
BeanNameUrlHandlerMapping BeanNameViewResolver BeanNotOfRequiredTypeException BeanPostProcessor BeanPropertyBindingResult BeanPropertySqlParameterSource BeanReference BeansDtdResolver ...
13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个...
13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个...
13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器(ViewResolver) 13.5.2. 视图解析链 13.5.3. 重定向...
13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器(ViewResolver) 13.5.2. 视图解析链 13.5.3. 重定向...
13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 ...