1、版本要求
Spring boot1.x的版本可以用 WebMvcConfigurerAdapter,但是此接口在Spring boot2.x的版本已經標為過期,因此對於2.x版本的情況需要用WebMvcConfigurationSupport或者WebMvcConfigurer來實現。下面分別進行介紹:
2、Spring boot2.x實現方式
方法一、創建類WebMvcConfigurer,繼承WebMvcConfigurationSupport類進行實現,代碼如下:
<code>package com.test.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurationSupport {
\t//配置文件路徑
@Value("${file.uploadFolder}")
private String uploadFolder;
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
\t//默認的資源映射需要填寫,不然不能正常訪問
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
//配置外部資源目錄的映射,/image目錄為前端訪問的路徑,後面配置靜態資源的絕對路徑
registry.addResourceHandler("/image/**").addResourceLocations("file:"+uploadFolder);
\t\t//調用基類的方法
super.addResourceHandlers(registry);
}
}/<code>
在application.properties配置文件中增加映射路徑配置:
#windows系統配置路徑
#file.uploadFolder=C:/Users/Administrator/Desktop/pic/
#linux系統配置路徑
file.uploadFolder=/root/pic/
==坑坑坑,重點==:
1.默認的資源映射,不能缺少,不然默認的static目錄將不能訪問!
2.配置"/image/**"路徑時,我第一次配置成"/image*/**",但是我static目錄恰巧有個資源目錄叫做images,這時導致配置失敗,默認路徑和外部資源配置功能都不能正常使用,因此,配置外部路徑時一定不能和工程內部的目錄有重名,或者有能適配上的名字。
3. 一個項目中:只能存在一個 WebMvcConfigurationSupport。不能存在多個,請切記!!!
配置完畢後就可以運行程序進行測試了:http://localhost:8080/image/xxx.jpg
方法二、創建類WebMvcConfigurer,實現WebMvcConfigurer接口類進行實現,代碼如下:
<code>package com.test.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @author [email protected]
* @Date: 2019/8/13 23:21
*/
@Configuration
public class WebMvcConfigurer implements WebMvcConfigurer {
//配置文件路徑
@Value("${file.uploadFolder}")
private String uploadFolder;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//默認的資源映射需要填寫,不然不能正常訪問
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
//配置外部資源目錄的映射,/image目錄為前端訪問的路徑,後面配置靜態資源的絕對路徑
registry.addResourceHandler("/image/**").addResourceLocations("file:"+uploadFolder);
}
}/<code>
測試方法同上。
3、Spring boot1.x實現方式
創建類WebMvcConfigurer,繼承WebMvcConfigurerAdapter 類進行實現,代碼如下:
<code>package com.example.demo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {
//配置文件路徑
@Value("${file.uploadFolder}")
private String uploadFolder;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//默認的資源映射需要填寫,不然不能正常訪問
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
//配置外部資源目錄的映射,/image目錄為前端訪問的路徑,後面配置靜態資源的絕對路徑
registry.addResourceHandler("/image/**").addResourceLocations("file:"+uploadFolder);
}
}/<code>
配置文件和測試方法同上。
本文由原創作者多平臺發佈,csdn平臺地址:https://blog.csdn.net/houpeibin2012/article/details/104248416
閱讀更多 Java學習達人 的文章