Java静态资源映射

WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制,可以自定义一些Handler,Interceptor,ViewResolver,MessageConverter。基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口;

在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated(弃用)。官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport,方式一实现WebMvcConfigurer接口(推荐),方式二继承WebMvcConfigurationSupport类,具体实现可看这篇文章。https://blog.youkuaiyun.com/fmwind/article/details/82832758


@Configuration
public class ResourceConfig extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //在windows环境下的图片存放资源路径
        String winPath = System.getProperty("user.dir")+"\\src\\main\\resources\\static\\files\\";
        //在Linux环境下的图片存放资源路径
        String linuxPath = "/usr/local/my_project/files/";
        String os = System.getProperty("os.name");
        if (os.toLowerCase().startsWith("win")) {  //windows系统
            //第一个方法设置访问路径前缀,第二个方法设置资源路径
            registry.addResourceHandler("/files/**").
                    addResourceLocations("file:"+winPath);
        }else{//linux系统
            registry.addResourceHandler("/files/**").
                    addResourceLocations("file:"+linuxPath);
        }
        super.addResourceHandlers(registry);
    }
}

这里主要是根据图片来说,静态资源也可以是音频,大文件

这里就是拦截所有请求中带有/file/的URL,/files/**为Java的虚拟路径
registry.addResourceHandler("/files/**").
linuxPath:为文件在磁盘中的真是路径,所以上述所有请求文件都会转到下面的路径上去找对应的文件
        addResourceLocations("file:"+linuxPath);

(感觉还是理解的说的不是很清楚,有懂的伙伴可以讲解讲解!)

关于为什么要在路径前面加file:

file:/// 是ftp传输的标准头格式,用于传输文件。类似http://,用于加载网页

关于File类:

File类是Java IO系统中的关键类,这个名字有一定的误导性,它可能会被认为是一个文件。
实际上它既能代表一个特定文件的名称,也能代表一个目录,用文件路径来称呼会比较容易理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值