如何让自己做的网站可以播放歌曲,做培训网站,珠海网站建设费用,域名服务器ip前言 spring-boot-devtools 是一个为开发者服务的一个模块#xff0c;其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后#xff0c;重新启动应用#xff0c;但是比速度比手动停止后再启动还要更快#xff0c;更快指的不是节省出来的手工…前言 spring-boot-devtools 是一个为开发者服务的一个模块其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后重新启动应用但是比速度比手动停止后再启动还要更快更快指的不是节省出来的手工操作的时间。 其深层原理是使用了两个ClassLoader一个Classloader加载那些不会改变的类第三方Jar包另一个ClassLoader加载会更改的类称为 restart ClassLoader
,这样在有代码更改的时候原来的restart ClassLoader 被丢弃重新创建一个restart ClassLoader由于需要加载的类相比较少所以实现了较快的重启时间5秒以内。
正文
第一步添加依赖 !-- devtools可以实现页面热部署即页面修改后会立即生效这个可以直接在application.properties文件中配置spring.thymeleaf.cachefalse来实现 实现类文件热部署类文件修改后不会立即生效实现对属性文件的热部署。 即devtools会监听classpath下的文件变动并且会立即重启应用发生在保存时机注意因为其采用的虚拟机机制该项重启是很快的 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-devtools/artifactId optionaltrue/optional /dependency 第二步配置spring-boot-maven-plugin
build plugins !-- 用于将应用打成可直接运行的jar该jar就是用于生产环境中的jar 值得注意的是如果没有引用spring-boot-starter-parent做parent 且采用了上述的第二种方式这里也要做出相应的改动 -- plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration !--fork : 如果没有该项配置肯呢个devtools不会起作用即应用不会restart -- forktrue/fork /configuration /plugin /plugins
/build 第三步开启编译器的自动编译
Eclipse Project 在运行选项中查看是否开启了Build Automatically如果没勾上就选中勾上。Eclipse默认是自动编译的。IDEA 默认在非RUN或DEBUG情况下才会自动编译。因此我们在启动Spring Boot后再次修改类的时候不会自动编译的开启在Run状态自动编译的流程如下 setting - build ShiftCtrlAlt/选择Registry 找到下面的选项勾选上就行了 我的是已经勾选过了的所以是蓝颜色的提示第一次就去找c开头的就可以了。
第四步运行测试
启动项目在run dashboard发现有devtools
修改类文件项目重启修改配置文件项目重启。
补充
如果设置SpringApplication.setRegisterShutdownHook(false)则自动重启将不起作用。默认情况下/META-INF/maven/META-INF/resources/resources/static/templates/public这些文件夹下的文件修改不会使应用重启但是会重新加载devtools内嵌了一个LiveReload server当资源发生改变时浏览器刷新。如果想改变默认的设置可以自己设置不重启的目录spring.devtools.restart.excludestatic/**,public/**这样的话就只有这两个目录下的文件修改不会导致restart操作了。如果要在保留默认设置的基础上还要添加其他的排除目录spring.devtools.restart.additional-exclude;如果想要使得当非classpath下的文件发生变化时应用得以重启使用spring.devtools.restart.additional-paths这样devtools就会将该目录列入了监听范围。设置 spring.devtools.restart.enabled 属性为false可以关闭自动重启。可以在application.properties中设置也可以通过设置环境变量的方式。
public static void main(String[] args){System.setProperty(spring.devtools.restart.enabled,false);SpringApplication.run(MyApp.class, args);
}