web-dev-qa-db-fra.com

Le type WebMvcConfigurerAdapter est obsolète

Je viens de migrer vers la version mvc de la version 5.0.1.RELEASE, mais soudainement, dans Eclipse STS WebMvcConfigurerAdapter est marqué comme obsolète

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/");
    }
  ....
  }

Comment puis-je supprimer cela!

84
alveomaster

Depuis le printemps 5, il ne vous reste plus qu'à implémenter l'interface WebMvcConfigurer:

public class MvcConfig implements WebMvcConfigurer {

En effet, Java 8 a introduit des méthodes par défaut sur les interfaces, qui couvrent les fonctionnalités de la classe WebMvcConfigurerAdapter.

Vois ici:

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

169
Plog

Je travaille actuellement sur la bibliothèque de documentation équivalente Swagger appelée Springfox et j’ai constaté que dans Spring 5.0.8 (fonctionnant actuellement), l’interface WebMvcConfigurer a été implémentée par la classe WebMvcConfigurationSupport classe que nous pouvons directement étendre. 

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

public class WebConfig extends WebMvcConfigurationSupport { }

Et voici comment je l'ai utilisé pour configurer mon mécanisme de traitement des ressources comme suit: 

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("swagger-ui.html")
            .addResourceLocations("classpath:/META-INF/resources/");

    registry.addResourceHandler("/webjars/**")
            .addResourceLocations("classpath:/META-INF/resources/webjars/");
}
4
Aniruddha Tekade

Au printemps, chaque demande passera par DispatcherServlet. Pour éviter les demandes de fichiers statiques via DispatcherServlet (Contrôleur avant), nous configurons MVC Statique content .

Printemps 3.1. a introduit ResourceHandlerRegistry pour configurer ResourceHttpRequestHandlers afin de servir des ressources statiques à partir du chemin de classe, du fichier WAR ou du système de fichiers. Nous pouvons configurer ResourceHandlerRegistry par programme dans notre classe de configuration de contexte Web.

  • nous avons ajouté le modèle /js/** au ResourceHandler, nous pouvons inclure la ressource foo.js située dans le répertoire webapp/js/
  • nous avons ajouté le modèle /resources/static/** au ResourceHandler, nous pouvons inclure la ressource foo.html située dans le répertoire webapp/resources/
@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());
    }
}

Configuration XML

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

Spring Boot Contenu statique MVC si le fichier se trouve dans le dossier webapp/resources du fichier WAR.

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

Utilisez org.springframework.web.servlet.config.annotation.WebMvcConfigurer

Avec Spring Boot 2.1.4.RELEASE (Spring Framework 5.1.6.RELEASE), faites comme ceci

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();
    }

}
0
Do Nhu Vy