一尘不染

是否可以扩展WebMvcConfigurationSupport并使用WebMvcAutoConfiguration?

spring-boot

我还需要扩展WebMvcConfigurationSupport类,还要修改两件事:

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
    @Override
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        RequestMappingHandlerMapping handlerMapping = super.requestMappingHandlerMapping();
        handlerMapping.setRemoveSemicolonContent(false);
        handlerMapping.setOrder(1);
        return handlerMapping;
    }
}

我喜欢从WebMvcAutoConfiguration类注册的默认值,但是由于该类上的条件注释,当我扩展WebMvcConfigurationSupport类时,它将阻止自动配置的发生。

@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class,
    WebMvcConfigurerAdapter.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@Order(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter(DispatcherServletAutoConfiguration.class)
public class WebMvcAutoConfiguration {...}

是否需要加载WebMvcAutoConfiguration类,而不必本质上复制/粘贴该类中的大多数代码?

或者是否可以从其他地方调用RequestMappingHandlerMapping
setOrder()和setRemoveSemicolonContent(),这样我就可以使用@EnableWebMvc批注并运行自动配置类而不会出现任何问题?

提前致谢!


阅读 531

收藏
2020-05-30

共1个答案

一尘不染

您的分析是正确的(@EnableWebMvc或直接扩展WebMvcConfigurationSupport将关闭WebMvcAutoConfiguration)。我不确定替代方案是什么,因为a)我们需要为autoconfig设置一个“
get-
out”子句,并且b)我不认为Spring喜欢WebMvcConfigurationSupports在相同的上下文中包含两个。很高兴在github上讨论是否要尝试找到一种更改它的方法(可能会有一些中间立场)。

2020-05-30