Sprint boot程序設置外部靜態資源映射及遇到的一個坑坑坑

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>


Sprint boot程序設置外部靜態資源映射及遇到的一個坑坑坑

配置文件和測試方法同上。


本文由原創作者多平臺發佈,csdn平臺地址:https://blog.csdn.net/houpeibin2012/article/details/104248416


分享到:


相關文章: