1. 配置方法
在config包下创建VirtualPathConfig.java
package com.eshang.principal.email.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.WebMvcConfigurerAdapter;
@Configuration
//配置虚拟路径
public class VirtualPathConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
/**
* 设置完毕以后,访问设置的url,就能访问到设置的本地磁盘路径
* 务必记得,本地磁盘路径最后要加"/",否则拼接url时,要多加一个/file/才能访问
* EG:
* 本地路径的img文件夹的1.jpg,设定url是localhost/xxx,
* 如果加上了最后的"/",那么1.jpg的url是localhost/xxx/img/1.jpg
* 但如果没加最后的"/",那么1.jpg的url是localhost/xxx/file/img/1.jpg
*/
registry.addResourceHandler("/【虚拟路径】/**")
//最后务必记得加上"/"
.addResourceLocations("file:/【本地磁盘路径】/");
super.addResourceHandlers(registry);
}
}
替换掉【虚拟路径】和【本地磁盘路径】即可
比如我希望通过访问以下url:
localhost/file/img/1.jpg
来访问本地磁盘路径
D:/testProject/img/1.jpg
那么就会有
【虚拟路径】:file
【本地磁盘路径】:D:/testProject
2. 注意事项
需要注意的是,第二个参数后面的"/"不要忘记
如果忘记,访问本地磁盘路径时,url还需要拼接一个/file/
具体原因暂不清楚,记得就好
3. 我的做法
其中virtualPath和localRootPath的值,来自于application.properties
这样做法的好处是:如果项目交由其他小伙伴运行
那么这个小伙伴可以统一修改application.properties这个配置文件
而不用同时修改多个文件,这样容易出现遗漏
(切换环境需要修改的所有参数,我都写入了application.properties中,然后用SPEL引用到对应的地方)