32

我参与的项目中我发现了以下内容:

@RequestMapping(value = "事件/...");
@RequestMapping(value = "/events/...");

(在方法级别注释之前有和没有斜线)。

我执行搜索:

站点:http://static.springsource.org/spring/docs/3.1.x 斜线

并阅读这些链接:

但是这些来源都没有回答为什么允许跳过斜线。官方 Spring 文档总是显示带有斜杠的示例......

需要指向官方文档或 Spring 资源。

4

1 回答 1

58

没关系:如果路径不是以 an 开头,/那么 Spring (DefaultAnnotationHandlerMapping) 会添加它。

请参见String[] determineUrlsForHandler(String beanName)Class DefaultAnnotationHandlerMappingline 122 (Spring 3.1.2) 的方法(即针对类级别)

String[] methodLevelPatterns = determineUrlsForHandlerMethods(handlerType, true);
for (String typeLevelPattern : typeLevelPatterns) {
    if (!typeLevelPattern.startsWith("/")) {
            typeLevelPattern = "/" + typeLevelPattern;
    }

请参见String[] determineUrlsForHandler(Class<?> handlerType, final boolean hasTypeLevelMapping))Class DefaultAnnotationHandlerMappingline 182 (Spring 3.1.2) 的方法(即方法级别)

String[] mappedPatterns = mapping.value();
if (mappedPatterns.length > 0) {
for (String mappedPattern : mappedPatterns) {
    if (!hasTypeLevelMapping && !mappedPattern.startsWith("/")) {
        mappedPattern = "/" + mappedPattern;
    }   
于 2012-10-05T10:08:53.677 回答