36

我想添加资源处理程序。在他们使用的论坛中:http WebMvcConfigurationSupport: //forum.springsource.org/showthread.php?116068-How-to-configure-lt-mvc-resources-gt-mapping-to-take-precedence-over-RequestMapping &p=384066#邮政384066

和文档说WebMvcConfigurerAdapterhttp ://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/web/servlet/config/annotation/EnableWebMvc.html

有什么区别和使用哪一个?两者都有addResourceHandlers我需要的方法。

这是我目前的课程:

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    public @Override void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources");
    }

    public @Bean TilesViewResolver tilesViewResolver() {
        return new TilesViewResolver();
    }

    public @Bean TilesConfigurer tilesConfigurer() {
        TilesConfigurer ret = new TilesConfigurer();
        ret.setDefinitions(new String[] { "classpath:tiles.xml" });
        return ret;
    }
}
4

4 回答 4

25

答案在您上面引用的文档中:

如果 WebMvcConfigurer 的自定义选项未公开您需要配置的内容,请考虑删除 @EnableWebMvc 注释并直接从 WebMvcConfigurationSupport 扩展覆盖选定的 @Bean 方法

简而言之,如果 @EnableWebMvc 对您有用,则无需进一步查看。

于 2013-07-29T14:01:57.550 回答
5

我最近在配置转换器时解决了同样的问题,这导致了相当长的帖子

默认情况下,Spring Boot 使用它的实现WebMvcConfigurationSupport并做了很多自动魔术,包括找到所有WebMvcConfigurer并使用它们。Boot 已经提供了一种实现,您可以添加更多。configureMessageConverters当您的实现中的转换器列表WebMvcConfigurer已经从以前的配置器中预先填充时,这会导致看似令人困惑的行为。

这些类型 (WebMvcConfigurationSupportWebMvcConfigurer) 也有惊人的相似接口——但第一个没有实现另一个。重点是:

支持类搜索配置器并使用它们 + 自己做一些事情。

如果你扩展WebMvcConfigurationSupport你接管配置,虽然有一些可用的东西不在WebMvcConfigurer(如addDefaultHttpMessageConverters)中,但也有大量的代码来自EnableWebMvcConfiguration并且DelegatingWebMvcConfiguration不会发生。

扩展WebMvcConfigurationSupportWebMvcConfigurer(不确定两者是否都有意义)都有其有效的用法,但是通过扩展支持类,您会更多地接管该过程并失去很多“自以为是”的 Spring Boot 功能。

于 2020-05-15T07:57:24.730 回答
4

最好扩展 WebMvcConfigurationSupport。它提供了更多的自定义选项,并且也适用于

configureMessageConverters(List<HttpMessageConverter<?>> converters) 

因为您可以使用添加这些转换器

addDefaultHttpMessageConverters(converters);

这不适用于 WebMvcConfigurerAdapter。

点击【这里】如何在使用基于spring注解的配置时配置MappingJacksonHttpMessageConverter?

如果您扩展 WebMvcConfigurerAdapter,它会在配置 Jackson 和 Jaxb 时表现异常。那件事发生在我身上!!!

于 2015-01-14T10:59:02.710 回答
3

如果您使用 ConfigurationSupport 类,请在尝试提供静态资源时做好准备,因为它不起作用。

于 2015-09-28T19:36:33.633 回答