我参与了一个项目,在那里我找到了一个混合:
@RequestMapping(value = "events/..."); @RequestMapping(value = "/events/...");
(在方法级别注释之前使用和不使用斜杠)。
我执行搜索:
site:http://static.springsource.org/spring/docs/3.1.x slash
并阅读以下链接:
但这些消息来源都没有回答为什么允许跳过斜线。官方Spring文档总是以斜线显示示例......
需要指向官方文档或Spring资源。
答案 0 :(得分:39)
没关系:如果路径不以/
开头,那么Spring(DefaultAnnotationHandlerMapping)将添加它。
请参阅类String[] determineUrlsForHandler(String beanName)
第122行(Spring 3.1.2)的方法DefaultAnnotationHandlerMapping
(适用于班级)
String[] methodLevelPatterns = determineUrlsForHandlerMethods(handlerType, true);
for (String typeLevelPattern : typeLevelPatterns) {
if (!typeLevelPattern.startsWith("/")) {
typeLevelPattern = "/" + typeLevelPattern;
}
请参阅类String[] determineUrlsForHandler(Class<?> handlerType, final boolean hasTypeLevelMapping))
第182行(Spring 3.1.2)的方法DefaultAnnotationHandlerMapping
(即方法级别)
String[] mappedPatterns = mapping.value();
if (mappedPatterns.length > 0) {
for (String mappedPattern : mappedPatterns) {
if (!hasTypeLevelMapping && !mappedPattern.startsWith("/")) {
mappedPattern = "/" + mappedPattern;
}