Подтвердить что ты не робот

Использовать или не приводить косые черты в значение для @RequestMapping. Нужны официальные документы или укажите на источник Spring?

Я участвовал в проекте, где нашел сочетание:

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

(с и без косой черты перед аннотацией уровня метода).

Выполняю поиск:

site:http://static.springsource.org/spring/docs/3.1.x  slash

и прочитайте следующие ссылки:

Но ни один из этих источников не отвечает, почему разрешено пропускать слэш. Официальные Spring docs всегда показывали примеры со слэшами...

Нужно указать официальные документы или источники Spring.

4b9b3361

Ответ 1

Не имеет значения: если путь не начинается с /, тогда Spring (DefaultAnnotationHandlerMapping) добавит его.

См. метод String[] determineUrlsForHandler(String beanName) класса DefaultAnnotationHandlerMapping строка 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)) класса DefaultAnnotationHandlerMapping строка 182 (Spring 3.1.2) (то есть для уровня метода)

String[] mappedPatterns = mapping.value();
if (mappedPatterns.length > 0) {
for (String mappedPattern : mappedPatterns) {
    if (!hasTypeLevelMapping && !mappedPattern.startsWith("/")) {
        mappedPattern = "/" + mappedPattern;
    }