我已经使用WebMvcConfigurerAdapter已有一段时间了。由于无法使用getInterceptors()方法获取所有已注册的拦截器,因此我切换到了WebMvcConfigurationSupport,它具有许多默认的已注册Spring Bean,如ContentNegotiationManager,ExceptionHandlerExceptionResolverusw。
现在,我已经意识到,尽管我在WebConfig类上使用了@EnableSpringDataWebSupport批注,但是非常方便的DomainClassConverter(使用CrudRepository将域类ID转换为域类对象)并未默认注册。
当我像这样显式定义此bean时,它将起作用。
@EnableSpringDataWebSupport
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Bean
public DomainClassConverter<?> domainClassConverter() {
return new DomainClassConverter<FormattingConversionService>(mvcConversionService());
}
}
但是,为什么EnableSpringDataWebSupport不能与WebMvcConfigurationSupport一起使用?
最佳答案
看起来,扩展WebMvcConfigurationSupport
的配置类直接遭受SPR-10565的困扰。解决方案,至少对我来说,是从DelegatingWebMvcConfiguration
扩展而来。
如果要覆盖配置类中的各个回调,则可能还要调用该父类(super class)的回调实现,以确保正确处理了所有回调。
关于spring - 注释@EnableSpringDataWebSupport不适用于WebMvcConfigurationSupport吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27088289/