WebMvcConfigurerAdapter প্রকারটি হ্রাস করা হয়েছে


116

আমি কেবল বসন্তের 5.0.1.RELEASEএমভিসি সংস্করণে স্থানান্তরিত করেছি তবে হঠাৎ করেই গ্রহনে এসটিএস ওয়েবএমভিসি কনফিগুরির অ্যাডাপ্টারটিকে অবচয় হিসাবে চিহ্নিত করা হয়েছে

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
@ ইয়ামি আপনি কেবল কনফিগার কল করেছেন মেসেজ কনভার্টার্স (রূপান্তরকারী) এটি ইন্টারফেসে সংজ্ঞায়িত ডিফল্ট পদ্ধতিটি
চালাবে

@ ব্লগ, @ ইয়ামি: প্রস্তাবিত হিসাবে কাজ করা একটি উত্পাদন করে java.lang.StackOverflowError, কারণ শুরুগুলি বাদ দেওয়া .superএকটি পুনরাবৃত্তি শুরু করে, কখনই কল লুপ শেষ হয় না।
তৃষ্ণার্তনোকলজ

2
তালিকায় রূপান্তরকারী যুক্ত করা, ডিফল্ট রূপান্তরকারী নিবন্ধকরণ বন্ধ করে দেয়। প্রথমে সুপার কন্টিগিগ্রেমেসেজ কনভার্টারকে (কনভার্টার) কল করে আপনি সম্ভবত ডিফল্ট রূপান্তরকারী রাখতে চান। ডিফল্ট রেজিস্ট্রেশনকে প্রভাবিত না করে কেবল একটি রূপান্তরকারী যুক্ত করার জন্য, পরিবর্তে পদ্ধতিটি extendMessageConverters(java.util.List)( ডকস.স্প্রিং.ইভি / স্প্রিং / ডকস / ক্রেন্ট / জাভাদোক- এপি / অর্গ /২ ) ব্যবহার করে বিবেচনা করুন।
তৃষ্ণার্তনোকলজ

1
নিবন্ধন করুন আপনাকে কোনও ইন্টারফেসে একটি সুপার ডিফল্ট পদ্ধতিতে কল করা উচিত: 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. রিলিজ (স্প্রিং ফ্রেমওয়ার্ক 5.1.6. রিলিজ) এর সাথে এটি করুন

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

বসন্তে প্রতিটি অনুরোধ ডিসপ্যাচারসার্ভলেটের মধ্য দিয়ে যাবে । ডিসপ্যাচারসারভাইলেটের (স্ট্রন্ট কনটোলার) মাধ্যমে স্ট্যাটিক ফাইলের অনুরোধ এড়াতে আমরা এমভিসি স্ট্যাটিক সামগ্রীটি কনফিগার করি ।

বসন্ত ৩.১। ক্লাসপাথ, ওয়ার, বা ফাইল সিস্টেম থেকে স্থিতিশীল সংস্থানগুলি পরিবেশন করার জন্য রিসোর্সএইচটিপিআরকুয়েস্টহ্যান্ডারগুলিকে কনফিগার করার জন্য রিসোর্স হ্যান্ডলারআরেজিস্ট্রি চালু করে। আমরা আমাদের ওয়েব প্রসঙ্গ কনফিগারেশন ক্লাসের অভ্যন্তরে রিসোর্সহ্যান্ডলাররেজিস্ট্রিটি কনফিগার করতে পারি।

  • আমরা যুক্ত করেছি /js/**ResourceHandler প্যাটার্ন দেয় অন্তর্ভুক্ত foo.jsমধ্যে অবস্থিত রিসোর্স webapp/js/ডিরেক্টরি
  • আমরা যুক্ত করেছি /resources/static/**ResourceHandler প্যাটার্ন দেয় অন্তর্ভুক্ত 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());
    }
}

এক্সএমএল কনফিগারেশন

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

ফাইলটি ওয়ারের ওয়েব অ্যাপ্লিকেশন / সংস্থান ফোল্ডারে অবস্থিত থাকলে স্প্রিং বুট এমভিসি স্ট্যাটিক সামগ্রী

spring.mvc.static-path-pattern=/resources/static/**
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.