我一直在使用WebMvcConfigurerAdapter。由于我无法使用getInterceptors()方法获取所有已注册的拦截器,因此我已切换到WebMvcConfigurationSupport,它有许多默认注册的Spring Bean,如ContentNegotiationManager,ExceptionHandlerExceptionResolver usw。
现在我已经意识到,非常方便的DomainClassConverter(使用CrudRepository将域类ID转换为域类对象)默认情况下未注册,尽管我在WebConfig类上使用了注释@EnableSpringDataWebSupport。
当我像这样明确地定义这个bean时,它会起作用。
@EnableSpringDataWebSupport
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Bean
public DomainClassConverter<?> domainClassConverter() {
return new DomainClassConverter<FormattingConversionService>(mvcConversionService());
}
}
但为什么EnableSpringDataWebSupport不能与WebMvcConfigurationSupport一起使用?
答案 0 :(得分:3)
看起来扩展WebMvcConfigurationSupport
的配置类直接受SPR-10565影响。至少对我而言,解决方案是从DelegatingWebMvcConfiguration
扩展而来。
如果你在配置类中覆盖了单个回调,你可能也想调用超类的回调实现,以确保它们都被正确处理。