zoukankan      html  css  js  c++  java
  • “WebMvcConfigurerAdapter is deprecated”解决方法

      原来的一个小项目采用的是 Springboot 1.5.2 的老版本了,在对图片调用时设置虚拟目录时使用的了 WebMvcConfigurerAdapter,这次新建项目使用了 Springboot 2.2.1 的版本,同样在设置虚拟目录时发现并没有生效,在配置类里面提示 WebMvcConfigurerAdapter 已经被弃用了(如下图),所以记录一下。

      这里先贴一下之前的代码,使得在通过访问 "/upload/img/xxx.jpg" 路径时找到对应在C盘的 upload/image 文件夹下的图片。

    @Configuration
    public class StaticMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/upload/img/**").addResourceLocations("file:C:/upload/img/");
            super.addResourceHandlers(registry);
        }
    }

      于是在简单了解后改用 WebMvcConfigurationSupport,配置方法与 WebMvcConfigurerAdapter 基本一致:

    @Configuration
    public class StaticMvcConfigurer extends WebMvcConfigurationSupport {
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/upload/img/**")
                    .addResourceLocations("file:C:/upload/img/");
            super.addResourceHandlers(registry);
        }
    }

      重启后,图片确实能访问到,但是在打开其他页面时 js/css 等静态资源均无法访问,控制台提示 “No mapping for GET”。在使用 WebMvcConfigurationSupport 后,WebMvcAutoConfiguration类就不会自动配置,所以需要再加一行配置:

    @Configuration
    public class StaticMvcConfigurer extends WebMvcConfigurationSupport {
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/**")
                    .addResourceLocations("classpath:/static/")
                    .addResourceLocations("classpath:/resources/");
            registry.addResourceHandler("/upload/img/**")
                    .addResourceLocations("file:C:/upload/img/");
            super.addResourceHandlers(registry);
        }
    }

      我的静态资源放在了项目的resourcesstatic目录下,重新启动后,js等静态资源加载正常,图片也能正常访问。值得注意的是,再写对应目录时必须以 “/” 结尾(上方标记红色处),否则无法访问到。另外,通过实现WebMvcConfigurer接口,同样可以实现。

  • 相关阅读:
    Django内置的响应类
    Django的路由规则
    Django中的中间件
    celery_2:异步任务简单使用
    celery_1:简介及定时任务简单使用
    mac系统 redis安装及常用命令
    redis连接:Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    千分位函数percentile()和percentile_approx()
    模型评估_1—回归模型:mse、rmse、mae、r2
    Spark_4_2:Spark函数之collect、toArray和collectAsMap
  • 原文地址:https://www.cnblogs.com/shenyuanfeng/p/13449804.html
Copyright © 2011-2022 走看看