失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Spring boot将项目的静态资源提取到项目外面的文件夹

Spring boot将项目的静态资源提取到项目外面的文件夹

时间:2020-02-04 15:43:36

相关推荐

Spring boot将项目的静态资源提取到项目外面的文件夹

不少人发现静态资源每次随着项目打成jar包,都会不断浪费时间,占用磁盘内存,而且随着时间推移,项目内会有很多大的静态资源,比如视频,音乐等等。

于是我忽然想到把静态资源提出来,昨天下午尝试了一下,没头绪,但是今天上午突然想起来了,下午便实现了这个功能。

1.首先,先在config包下添加一个新的类WebResource,需要继承WebMvcConfigurationSupport,代码如下:

@Configurationpublic class WebResource extends WebMvcConfigurationSupport {//对应application.yml配置文件里面的参数@Value("${resource.windowsResources}")private String resourcePathWindows;@Value("${resource.linuxResources}")private String resourcePathLinux;@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {//获得系统型号,注意,这里之所以获得是因为外面打代码,测试运行需要在Windows上面运行,而项目则一般发布在Linux。String osName = System.getProperty("os.name");//如果是Windows系统if (osName.toLowerCase().startsWith("win")) {registry.addResourceHandler("/resources/**").addResourceLocations("file:" + resourcePathWindows);// /resources/**表示在磁盘filePathWindow目录下的所有资源会被解析为以下的路径 } else { //linux 和macregistry.addResourceHandler("/resources/**").addResourceLocations("file:" + resourcePathLinux) ;}super.addResourceHandlers(registry);}}

2.接下来便需要在application.yml中编写如下:

resource:## windows系统下访问路径windowsResources: D:\java\## linux系统下访问路径linuxResources: /project/myserver/resources/

注意:Windows下文件路径是 X:\xxx\xxx\,而Linux下文件路径是/xxx/xxx/xxx/.

切记,最后一定是以“\” 或 “/”结尾,不能以文件名结尾。

3.配置已经完成,接下来就是应用。

列举一段之前引入的css代码:

<link rel="stylesheet" type="text/css" href="css/base.css" />

注意:我是spring boot整合的thymeleaf,springboot自动搜索templates包下的static文件夹

下面是配置后的引入:

<link rel="stylesheet" type="text/css" href="resources/static/css/base.css" />

不同:resources/static,这是之前的config配置代码中的一段:registry.addResourceHandler("/resources/**").addResourceLocations("file:" + resourcePathWindows);

resource就是自己定义的字符串,而static则是我把static(包含css)整个文件夹放在了 :D:\java\

## windows系统下访问路径

windowsResources: D:\java\

4.测试,成功则上传资源,发布项目!

如果觉得《Spring boot将项目的静态资源提取到项目外面的文件夹》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。