SpringBoot 如何实时刷新静态文件

网友投稿 623 2022-09-09


SpringBoot 如何实时刷新静态文件

目录你是否受够了每次修改静态文件都要重启服务器?方案SpringBoot静态资源不重启刷新,自定义配置1. demo2. 如何不重启修改生效3. 原理小结一下

你是否受够了每次修改静态文件都要重启服务器?

有时候在一些公司前后端的职责没有那么的明确,往往后台人员也要去写一些页面,像jsp页面,或者其他的后台模板页面等。默认情况下java文件会被编译为class文件,并且静态资源文件也被一并的编译进class目录下面,这样导致我们每次修改静态文件都要重新编译进class目录,很麻烦,有没有什么简便的方案呢?

方案

Spring BoRPIlAWCzot在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

RPIlAWCz org.springframework.boot

spring-boot-starter-web

2.1.6.RELEASE

@SpringBootApplication

public 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只认tahttp://rget,我们修改的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;

小结一下


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Internet应用(internet应用技术论坛)
下一篇:BGP实验二(ospf和bgp综合实验)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~