我們再來看一看不配置任何HandlerMapping時,框架會使用什么。
創(chuàng)新互聯(lián)建站于2013年成立,先為武江等服務(wù)建站,武江等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為武江企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。接著使用上面的配置,注釋掉那個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。