WebMvcAutoConfiguration не активируется - PullRequest
0 голосов
/ 04 октября 2018

У меня довольно простое приложение с весенней загрузкой, и после отладки проблем с генерацией URL ресурса, уничтожающего кэш, обнаружилось, что WebMvcAutoConfiguration не запускается при запуске приложения.

Вот соответствующий вывод журнала:

WebMvcAutoConfiguration:
  Did not match:
     - @ConditionalOnMissingBean (types: org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; SearchStrategy: all) found beans of type 'org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport' org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration (OnBeanCondition)
  Matched:
     - @ConditionalOnClass found required classes 'javax.servlet.Servlet', 'org.springframework.web.servlet.DispatcherServlet', 'org.springframework.web.servlet.config.annotation.WebMvcConfigurer'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)
     - found ConfigurableWebEnvironment (OnWebApplicationCondition)

После отладки в течение нескольких часов и сравнения поведения пустого приложения с моим, единственное различие, которое я обнаружил, состоит в том, что существует больше MvcConfigurerэкземпляры в моем приложении.А именно:

  • мой пользовательский WebMvcConfigurer (для cors и прочего)
  • Spring-JPA Configurer
  • Spring-Data Configurer

IЯ бы сказал, что эти вещи могли бы сосуществовать бок о бок, но, очевидно, в игре есть что-то еще.

Теперь я в растерянности, потому что потратил часы на отладку этой проблемы.

Мой вопрос заключается в том, как найти источник этого недостающего компонента DelegatingWebMvcConfiguration, который отключает WebMvcAutoConfiguration?

1 Ответ

0 голосов
/ 07 апреля 2019

У меня просто есть эта проблема с SpringBoot 2.1.3.RELEASE, это задолго до anwser, но, возможно, поможет другим.

Решение это просто удалить @EnableWebMvc.

Если вы посмотрите класс EnableWebMvc, он импортирует непосредственно DelegatingWebMvcConfiguration, поэтому, когда WebMvcAutoConfiguration проверяет условие, он обнаружил bean-компоненты DelegatingWebMvcConfiguration.

А без EnableWebMvc WebMvcAutoConfiguration имеет статическую конфигурацию:

@Configuration
public static class EnableWebMvcConfiguration extends DelegatingWebMvcConfiguration

Возможно, это имеет другое влияние, но я просто запускаю свой проект и не могу проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...