使用或不使用@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; }