1、如何使用外部静态文件?
需要再 application.yml 添加以下节点
server:
port: 443
spring:
resources:
static-locations: file:D://uploadfile
mvc:
static-path-pattern: /**
thymeleaf:
prefix: classpath:/templates/
2、使用外部静态文件有什么用?
在本演示网站中,我仅仅用作上传目录,因为springboot中,我们不可能把用户上传的文件直接往springboot中上传,这样会让以后更新spring boot站点造成很大的麻烦,首先我们要解压原来的jar,再把文件拷贝到开发环境,然后再打包,而且当这些文件越来越多,我们的速度就会越来越慢。
3、使用外部静态文件还能做什么?
既然可以作为一个上传目录去使用,在发散思维的想想,我们是不是可以把外部静态目录作为一个完整的站点。这样只要springboot一只在跑,我们更新只需要更新D盘的所有文件,只要设计到位,就不用重启spring boot。甚至我们多人开发的时候,可以把外部静态目录作为一个共享文件夹,让所有前端把自己负责的模块文件都实时编译到这个共享文件夹,这样就不用每个前端开一个spring boot来调试,节约电脑性能。
4、注意的地方
我们新增了static-locations: file:D://uploadfile,访问路径即是从uploadfile下一层目录开始。比如 😄://uploadfile/file/1.jpg,则访问路径就是 http://127.0.0.1/file/1.jpg
shiro 过滤拦截 则写出 filterChainDefinitionMap.put("/file/**", “anon”);
不需要把 uploadfile 这个路径考虑进去。
/*配置不会被拦截的链接 顺序判断*/
/*anon:所有url都都可以匿名访问*/
/*webjars swagger 加载到webjar的资源,所以webjar下的资源不能被拦截,否者无法访问*/
filterChainDefinitionMap.put("/webjars/**", "anon");
filterChainDefinitionMap.put("/swagger-ui.html", "anon");
filterChainDefinitionMap.put("/swagger-resources/**", "anon");
filterChainDefinitionMap.put("/v2/api-docs/**", "anon");
filterChainDefinitionMap.put("/app/**", "anon");
filterChainDefinitionMap.put("/static/**", "anon");
filterChainDefinitionMap.put("/file/**", "anon");
综上,灵活运用也可以大大方便开发。