標籤:訪問 ges log 不能 resource value default inf ring
使用SpringMVC架構時發現有的配置了HandlerMapping,而有的沒有,那麼它們有什麼區別呢?不配置能不能正常使用架構呢?
下面我們看一看不配置任何HandlerMapping時,架構會使用什嗎?
下面我們注釋掉架構中配置HandlerMapping的代碼
<?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation=" 6 http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context 9 http://www.springframework.org/schema/context/spring-context.xsd10 http://www.springframework.org/schema/mvc11 http://www.springframework.org/schema/mvc/spring-mvc.xsd">12 13 <context:component-scan base-package="com.springmvc.demo.controller" />14 15 <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />16 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> -->17 <!-- <mvc:default-servlet-handler/> -->18 <!-- <mvc:annotation-driven /> -->19 <!-- <mvc:resources location="/resource/images/" mapping="/images/**" /> -->20 <bean id="/simpleController" class="com.springmvc.demo.controller.SimpleController"></bean>21 22 <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">23 </bean> -->24 25 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">26 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />27 <property name="prefix" value="/" />28 <property name="suffix" value=".jsp" />29 </bean>30 31 32 </beans>
這次我們打一斷點調試一下看看使用了什麼HandlerMapping:
可以看到註冊了兩個HandlerMapping,所以:
1.訪問/simpleController,正常
2.訪問/user/preAddUser(通過@RequestMapping註解的)也正常,因為DefaultAnnotationHandlerMapping也可以處理註解,這個還是spring3.1之前處理註解的一個類,3.1及以後改為了RequestMappingHandlerMapping這個類,查看api可以看到這個類【已經到期】,預設情況繼續使用這個類可能是為了向後相容。
其實這是一個預設配置,位置在spring-webmvc.jar裡面,如果你沒有顯式註冊一個HandlerMapping,那麼就會使用org.springframework.web.servlet.DispatcherServlet.properties這個裡面預設的配置,配置如下:
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
所以就會註冊上面兩個RequestMapping。
SpringMVC筆記- 不配置HandlerMapping