问题描述:maven(Gradle)项目修改前台页面文件,只是刷新页面不起作用,总是要项目重启才能够起作用
解决:pom.xml(builder.gradle)文件中将spring-boot-devtools的引用注释了,放开注释就OK了
springboot-devtools模块能够实现热部署,添加类.添加方法,修改配置文件,修改页面等,都能实现热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现).
原理就是重启项目,但比手动重启快多了,其深层原理是使用了两个ClassLoder,一个ClassLoader加载哪些不会改变的类(第三方jar包),另一个ClassLoader加载会更改的类.称之为restart ClassLoader,这样在有代码更改的时候,原来的restart Classloader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)
引用devtools只需在项目的配置文件中引入相应的jar包即可
注意:IDEA中使用热部署之前还要调整两个设置
1、file->setting->Build,Execution,Deloyment->Compiler->Build project automatically打上check;
2、组合键:“Shift+Ctrl+Alt+/” ,选择 “Registry” ,选中打勾“compiler.automake.allow.when.app.running”
注意:classpath路径下的静态资源文件或者视图模板等发生变化时,并不会导致项目重启
如果想要static目录下的静态资源修改后项目也重启,需要在application.properties文件中增加配置,有以下两种配置方法:
1、spring.devtools.restart.exclude = static/**
表示从默认的不触发重启的目录中除去static目录
2、spring.devtools.restart.additional-paths = src/main/resources/static(或templates,看html文件在项目中的位置而定)/
表示在需要监控重启项目的目录中加上static目录