SpringBoot怎么实时刷新静态文件
小编给大家分享一下SpringBoot怎么实时刷新静态文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
方案
Spring Boot在MVC中有个WebMvcProperties的配置类,还有个ResourceProperties资源配置类。
默认情况下Spring Boot从下面的目录下寻找静态资源文件
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" };
默认的静态资源路径匹配为/**。
修改Spring Boot配置,注意static-locations为静态资源在自己电脑中的绝对路径配置
spirng resources: chain: cache: false static-locations: file:///Users/aihe/Desktop/taqu/ticket-system/src/main/resources/static/,file:///Users/aihe/Desktop/taqu/ticket-system/src/main/resources/ mvc: static-path-pattern: /static/**
以后再修改静态文件的时候,js,html,css等即可立即生效,也不需要热部署的插件什么的。算是一个小tip吧~
SpringBoot静态资源不重启刷新,自定义配置
经常做Spring Boot开发,有很多时候不需要前后端分离,比如后管系统。开发的时候每次修改页面就需要重启,极度不方便。其实Spring Boot设计是不需要重启的,只是我们没注意用法而已。
1. demo
pom & main
org.springframework.boot spring-boot-starter-web 2.1.6.RELEASE
@SpringBootApplicationpublic class BootMain { public static void main(String[] args) { SpringApplication.run(BootMain.class, args); }}
静态资源文件,查询官方docs文档放在"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"任意目录,即可加载
启动main,访问http://localhost:8082/index.html,笔者自定义了端口
2. 如何不重启修改生效
其实很简单,Spring Boot生效的目录在target目录,并非我们的resource目录
Spring Boot只认target,我们修改的resources怎么会自动编译target呢,所以要重启了!?
解决方法有很多,常见的有mvn compile即可,或者自动编译(不推荐,因为资源文件,java也会编译),其实有一种非常简单的方法
每次修改后,右键,recompile即可,我已经修改了,来试试
生效了,?
3. 原理
了解原理有利于我们自定义Spring Boot,从根源上来使用它
可以看到,静态资源加载的代码是
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/")
里面的参数请自动忽略,因为我们可以自定义
这是为什么很多教程说自定义这个方法即可,不重启刷新静态资源,因为教程是指定了资源文件的路径,编译后的路径就是资源路径
常用的自定义spring.mvc.staticPathPattern = "/**",默认/**,配置pattern,url的路径参数
@ConfigurationProperties(prefix = "spring.mvc")public class WebMvcProperties { private String staticPathPattern = "/**";
spring.resources.staticLocations = classpath:/html/,默认如下,这是Spring Boot默认配置的的路径
@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)public class ResourceProperties { private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" }; /** * Locations of static resources. Defaults to classpath:[/META-INF/resources/, * /resources/, /static/, /public/]. */ private String[] staticLocations = CLASSPATH_RESOURCE_LOCATIONS;
看完了这篇文章,相信你对"SpringBoot怎么实时刷新静态文件"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!