项目中需要将图片放在磁盘上,不能将图片放在webapp下面,否则图片多起来部署时会出现问题

在网上找了好长时间的解决方案,终于确认过眼神是我想要的,然后做一些总结

方法有两种,一种是基于配置文件另一种是基于代码层面配置

基于配置文件:

# 默认值为 /**
spring.mvc.static-path-pattern=/img/**
# 默认值为 classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
spring.resources.static-locations=这里设置要指向的外部路径,可以用多个使用英文逗号隔开,

举个例子:

一.
spring.mvc.static-path-pattern=/images/* locations=file:D:/images/,classpath:/static/

此时你的访问路径应为:http://localhost:8888/
images/xxx.jpg
但是这样会出现一个问题,你之前所以的静态资源路径都要加上/images/不然会报404

二.

如果你不设置:spring.mvc.static-path-pattern=/images/*使用它默认的/**
那你的访问路径只能是xxx.jpg(只能是图片的名字)


打个比方:spring.mvc.static-path-pattern=/images/*就像一个最大的文件夹,该文件夹里可以有多个资源文件夹,但是想访问这些资源文件就必须通过这个最大的文件夹,但是这个大文件在配置中只能有一个(基于代码可以解决此问题)
注意:配置spring.resources.static-locations=file:D:/uploadWheel/,classpath:/static/ 要添加,classpath:/static/不然其他静态资源无法访问

 

 

基于代码:

package com.taotao.Config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * @Description:访问项目外资源路径
 * @Author: TaoTao
 * @Date:2019/11/16 11:16
 */
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        //addResourceHandler是指你想在url请求的路径
        //addResourceLocations是图片存放的真实路径
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("/uploadWheel/**").addResourceLocations("file:D:/uploadWheel/");
        super.addResourceHandlers(registry);
    }
}