我們再來看一看不配置任何HandlerMapping時,框架會使用什么。
接著使用上面的配置,注釋掉那個HandlerMapping:
1 2 12
13 14
15 17 18 19 20 21
22 24
25 26 27 28 29 30
31
32
這次我們打一斷點調(diào)試一下看看使用了什么HandlerMapping:
可以看到注冊了兩個HandlerMapping,所以:
1.訪問/simpleController,正常
2.訪問/user/preAddUser(通過@RequestMapping注解的)也正常,因為DefaultAnnotationHandlerMapping也可以處理注解,這個還是spring3.1之前處理注解的一個類,3.1及以后改為了RequestMappingHandlerMapping這個類,查看api可以看到這個類【已經(jīng)過期】,默認(rèn)情況繼續(xù)使用這個類可能是為了向后兼容。
其實這是一個默認(rèn)配置,位置在spring-webmvc.jar里面,如果你沒有顯式注冊一個HandlerMapping,那么就會使用org.springframework.web.servlet.DispatcherServlet.properties這個里面默認(rèn)的配置,配置如下:
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
所以就會注冊上面兩個RequestMapping。