WebMvcAutoConfiguration未激活

时间:2018-10-04 12:34:41

标签: java spring spring-mvc spring-boot

我有一个相当简单的spring-boot应用程序,在调试问题时,由于缓存无效化资源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配置器
  • Spring-Data配置器

我希望这些东西能够并存,但是显然还有其他作用。

现在我很茫然,因为我花了几个小时调试这个问题。

我的问题是如何找到禁用WebMvcAutoConfiguration的缺少的DelegatingWebMvcConfiguration bean的来源?

1 个答案:

答案 0 :(得分:0)

SpringBoot 2.1.3.RELEASE我只是遇到了这个问题,过了很长时间才解决,但也许可以帮助其他人。

解决方案只是删除@EnableWebMvc。

如果您查看EnableWebMvc类,它将直接导入DelegatingWebMvcConfiguration,因此,当WebMvcAutoConfiguration验证条件时,将找到DelegatingWebMvcConfiguration Bean。

如果没有EnableWebMvc,则使用WebMvcAutoConfiguration且它具有静态配置:

@Configuration
public static class EnableWebMvcConfiguration extends DelegatingWebMvcConfiguration

也许这会带来其他影响,但是我只是开始我的项目,而无法验证。