不推荐使用WebMvcConfigurerAdapter类型

时间:2017-11-29 12:25:05

标签: java spring spring-mvc

我只是迁移到spring mvc version 5.0.1.RELEASE但突然在eclipse中STS WebMvcConfigurerAdapter被标记为已弃用

public class MvcConfig extends WebMvcConfigurerAdapter {
  @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
        // to serve static .html pages...
        registry.addResourceHandler("/static/**").addResourceLocations("/resources/static/");
    }
  ....
  }

我该如何删除它!

4 个答案:

答案 0 :(得分:183)

从Spring 5开始,您只需要实现接口WebMvcConfigurer

public class MvcConfig implements WebMvcConfigurer {

这是因为Java 8在接口上引入了默认方法,涵盖了WebMvcConfigurerAdapter

的功能

见这里:

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/WebMvcConfigurerAdapter.html

答案 1 :(得分:5)

如今,我一直在开发名为Springfox的Swagger等效文档库,发现在Spring 5.0.8(目前正在运行)中,接口WebMvcConfigurer已由类{{1}实现我们可以直接扩展的类。

WebMvcConfigurationSupport

这就是我用来设置资源处理机制的方式,如下所示-

import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

public class WebConfig extends WebMvcConfigurationSupport { }

答案 2 :(得分:0)

在春季,每个请求都将通过 DispatcherServlet 。为了避免通过DispatcherServlet(Front contoller)进行静态文件请求,我们配置MVC Static content

Spring 3.1。引入了ResourceHandlerRegistry,以配置ResourceHttpRequestHandlers来从类路径,WAR或文件系统中提供静态资源。我们可以在Web上下文配置类中以编程方式配置ResourceHandlerRegistry。

  
      
  • 我们已将 /js/** 模式添加到ResourceHandler,让其包含位于 foo.js 目录中的webapp/js/资源< / li>   
  • 我们已将 /resources/static/** 模式添加到ResourceHandler,让其包含位于 foo.html 目录中的webapp/resources/资源< / li>   
@Configuration
@EnableWebMvc
public class StaticResourceConfiguration implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        System.out.println("WebMvcConfigurer - addResourceHandlers() function get loaded...");
        registry.addResourceHandler("/resources/static/**")
                .addResourceLocations("/resources/");

        registry
            .addResourceHandler("/js/**")
            .addResourceLocations("/js/")
            .setCachePeriod(3600)
            .resourceChain(true)
            .addResolver(new GzipResourceResolver())
            .addResolver(new PathResourceResolver());
    }
}

XML配置

<mvc:annotation-driven />
  <mvc:resources mapping="/staticFiles/path/**" location="/staticFilesFolder/js/"
                 cache-period="60"/>

Spring Boot MVC Static Content (如果文件位于WAR的 webapp / resources 文件夹中)。

spring.mvc.static-path-pattern=/resources/static/**

答案 3 :(得分:0)

使用org.springframework.web.servlet.config.annotation.WebMvcConfigurer

在Spring Boot 2.1.4.RELEASE(Spring框架5.1.6.RELEASE)中,这样做

package vn.bkit;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; // Deprecated.
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
public class MvcConfiguration implements WebMvcConfigurer {

    @Bean
    public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/");
        resolver.setSuffix(".html");
        return resolver;
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

}