प्रकार WebMvcConfigurerAdapter पदावनत है


116

मैं बस स्प्रिंग mvc संस्करण 5.0.1.RELEASEपर जाता हूं लेकिन अचानक ग्रहण में 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/");
    }
  ....
  }

मैं इसे कैसे हटा सकता हूं!

जवाबों:


227

वसंत 5 के बाद से आपको बस इंटरफ़ेस लागू करने की आवश्यकता है WebMvcConfigurer:

public class MvcConfig implements WebMvcConfigurer {

ऐसा इसलिए है क्योंकि जावा 8 ने इंटरफेस पर डिफ़ॉल्ट तरीके पेश किए हैं जो WebMvcConfigurerAdapterकक्षा की कार्यक्षमता को कवर करते हैं

यहाँ देखें:

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


1
क्या होगा अगर मेरे पास था तो super.configureMessageConverters(converters)अब मैं इस कोड का अनुवाद कैसे कर सकता हूं ? अब इसका कोई superसंदर्भ नहीं है।
ट्रिकहार्ड

1
@yami को आप बस कॉन्फ़िगर कहते हैं। संदेश भेजने वाले (कन्वर्टर्स) इसे इंटरफ़ेस पर परिभाषित डिफ़ॉल्ट विधि
चलाएंगे

@Plog, @Yami: जैसा कि सुझाया गया है java.lang.StackOverflowError, उत्पादन करता है , क्योंकि .superएक पुनरावर्ती को छोड़ना , कॉल लूप को कभी समाप्त नहीं करता है।
ThirstForKnowledge

2
सूची में कन्वर्टर्स जोड़ना, डिफ़ॉल्ट कनवर्टर पंजीकरण बंद कर देता है। सुपर.configureMessageConverters (कन्वर्टर्स) को कॉल करके सबसे पहले आप शायद डिफ़ॉल्ट कनवर्टर रखना चाहते हैं। डिफ़ॉल्ट पंजीकरण को प्रभावित किए बिना बस एक कनवर्टर जोड़ने के लिए, इसके बजाय विधि extendMessageConverters(java.util.List)( डॉक्स.सप्रिंग .io/spring/docs/current/javadoc-api/org/… ) का उपयोग करने पर विचार करें ।
ThirstForKnowledge

1
@ThirstForKnowledge ओह यह मेरा बुरा है। जिस तरह से आपको एक इंटरफ़ेस पर एक सुपर डिफॉल्ट विधि को कॉल करना चाहिए वह है: WebMvcConfigurer.super.configureMessageConverters (कन्वर्टर्स)
रोकें

7

मैं Springfoxआजकल स्वैगर समकक्ष प्रलेखन लाइब्रेरी पर काम कर रहा हूं और मैंने पाया कि स्प्रिंग 5.0.8 (वर्तमान में चल रहा है) में, इंटरफ़ेस WebMvcConfigurerको क्लास WebMvcConfigurationSupportक्लास द्वारा लागू किया गया है जिसे हम सीधे विस्तारित कर सकते हैं।

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

public class WebConfig extends WebMvcConfigurationSupport { }

और इस तरह मैंने अपने संसाधन हैंडलिंग तंत्र की स्थापना के लिए इसका उपयोग किया है -

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

1

उपयोग org.springframework.web.servlet.config.annotation.WebMvcConfigurer

स्प्रिंग बूट के साथ 2.1.4.RELEASE (स्प्रिंग फ्रेमवर्क 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();
    }

}

0

वसंत में हर अनुरोध डिस्पैचर सेलेट के माध्यम से जाएगा । DispatcherServlet (फ्रंट कॉनोलर) के माध्यम से स्टेटिक फ़ाइल अनुरोध से बचने के लिए हम MVC स्टेटिक सामग्री को कॉन्फ़िगर करते हैं ।

वसंत 3.1। ClassHath, WAR या फ़ाइल सिस्टम से स्थिर संसाधनों की सेवा के लिए ResourceHttpRequestHandlers को कॉन्फ़िगर करने के लिए ResourceHandlerRegistry की शुरुआत की। हम संसाधनहैंडलररजिस्ट्री को हमारे वेब संदर्भ विन्यास कक्षा के अंदर प्रोग्रामेटिक रूप से कॉन्फ़िगर कर सकते हैं।

  • हमने रिसोर्सहैंडलर में /js/**पैटर्न जोड़ दिया है , जिससे डायरेक्टरी foo.jsमें स्थित रिसोर्स को शामिल किया जा सकता हैwebapp/js/
  • हमने रिसोर्सहैंडलर में /resources/static/**पैटर्न जोड़ दिया है , जिससे डायरेक्टरी foo.htmlमें स्थित रिसोर्स को शामिल किया जा सकता है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());
    }
}

XML कॉन्फ़िगरेशन

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

स्प्रिंग बूट MVC स्टेटिक सामग्री यदि फ़ाइल WAR के वेबैप / संसाधन फ़ोल्डर में स्थित है।

spring.mvc.static-path-pattern=/resources/static/**
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.