使用或不使用@RequestMapping值的斜杠值。 需要官方文档还是指向Spring源码?
我参与了项目,在那里我发现了以下各项:
@RequestMapping(value =“events / ...”); @RequestMapping(value =“/ events / ...”);
(在方法级别注释之前使用和不使用斜杠)。
我执行搜索:
site:http://static.springsource.org/spring/docs/3.1.x斜杠
并阅读这些链接:
- http://forum.springsource.org/showthread.php?130753-Various-Spring-MVC-RequestMapping-configuration-questions
- 各种Spring MVC RequestMapping配置问题
- 处理@RequestMapping中的预斜杠
- http://tools.ietf.org/html/rfc6570
但这些消息来源都没有回答为什么允许跳过斜线。 官方Spring文档总是以斜线显示示例…
需要指向官方文档或Spring资源。
没关系:如果路径没有以/
开始,那么Spring(DefaultAnnotationHandlerMapping)将添加它。
请参阅类DefaultAnnotationHandlerMapping
第122行(Spring 3.1.2)的方法String[] determineUrlsForHandler(String beanName)
)(即类级别)
String[] methodLevelPatterns = determineUrlsForHandlerMethods(handlerType, true); for (String typeLevelPattern : typeLevelPatterns) { if (!typeLevelPattern.startsWith("/")) { typeLevelPattern = "/" + typeLevelPattern; }
请参见类DefaultAnnotationHandlerMapping
第182行(Spring 3.1.2)的方法String[] determineUrlsForHandler(Class> handlerType, final boolean hasTypeLevelMapping))
)(即方法级别)
String[] mappedPatterns = mapping.value(); if (mappedPatterns.length > 0) { for (String mappedPattern : mappedPatterns) { if (!hasTypeLevelMapping && !mappedPattern.startsWith("/")) { mappedPattern = "/" + mappedPattern; }