5

我一直在使用 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 一起使用呢?

4

1 回答 1

3

看起来WebMvcConfigurationSupport直接扩展的配置类受到SPR-10565 的影响。至少对我来说,解决方案是从DelegatingWebMvcConfiguration改为扩展。

如果您在配置类中覆盖单个回调,您可能还需要调用回调的超类实现,以确保正确处理所有回调。

于 2015-04-07T20:20:59.743 回答