Обработка аннотаций Spring

Не поднимать мертвых спустя больше года, но все предыдущие ответы пропускают некоторые важные моменты:

  1. @EnableWebMvc на вашем классе отключит org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration. Это нормально, если вы хотите полный контроль, но в остальном это проблема.
  2. Нет необходимости писать код, чтобы добавить другое место для статических ресурсов в дополнение к тому, что уже предусмотрено. Глядя на org.springframework.boot.autoconfigure.web.ResourceProperties из v1.3.0.RELEASE, я вижу поле staticLocations, которое можно настроить в application.properties. Вот фрагмент из источника:
    /**
     * Locations of static resources. Defaults to classpath:[/META-INF/resources/,
     * /resources/, /static/, /public/] plus context:/ (the root of the servlet context).
     */
    private String[] staticLocations = RESOURCE_LOCATIONS;
    
  3. Как упоминалось ранее, URL-адрес запроса будет разрешен относительно этих местоположений. Таким образом, src/main/resources/static/index.html будет использоваться, когда URL-адрес запроса /index.html. Класс, который отвечает за разрешение пути, начиная с Spring 4.1, - org.springframework.web.servlet.resource.PathResourceResolver.
  4. Совпадение шаблонов суффикса включено по умолчанию, что означает URL-адрес запроса /index.html, Spring будет искать обработчиков, соответствующих /index.html. Это проблема, если целью является статический контент. Чтобы отключить это, продолжите WebMvcConfigurerAdapter (но не используйте @EnableWebMvc) и переопределите configurePathMatch, как показано ниже:
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        super.configurePathMatch(configurer);
    
        configurer.setUseSuffixPatternMatch(false);
    }
    

IMHO, единственный способ уменьшить количество ошибок в вашем коде не писать код, когда это возможно. Используйте то, что уже было предоставлено, даже если это потребует некоторых исследований, возвращение того стоит.

0
задан Yuriy Hladyuk 13 July 2018 в 13:56
поделиться