SpringBoot之spring-boot-devtools热部署

问题描述: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包即可

SpringBoot之spring-boot-devtools热部署_第1张图片

注意: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目录

你可能感兴趣的:(springboot学习知识点,spring,boot,spring,java)