我有一个相当简单的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实例。即:
我希望这些东西能够并存,但是显然还有其他作用。
现在我很茫然,因为我花了几个小时调试这个问题。
我的问题是如何找到禁用WebMvcAutoConfiguration的缺少的DelegatingWebMvcConfiguration bean的来源?
答案 0 :(得分:0)
SpringBoot 2.1.3.RELEASE我只是遇到了这个问题,过了很长时间才解决,但也许可以帮助其他人。
解决方案只是删除@EnableWebMvc。
如果您查看EnableWebMvc类,它将直接导入DelegatingWebMvcConfiguration,因此,当WebMvcAutoConfiguration验证条件时,将找到DelegatingWebMvcConfiguration Bean。
如果没有EnableWebMvc,则使用WebMvcAutoConfiguration且它具有静态配置:
@Configuration
public static class EnableWebMvcConfiguration extends DelegatingWebMvcConfiguration
也许这会带来其他影响,但是我只是开始我的项目,而无法验证。