SpringBoot系列:springdevtools模块

如题所述

第1个回答  2022-07-14

spring-boot-devtools是Spring Boot给开发人员提供的一个工具包,它可以提高开发人员的工作效率。我们可以通过如下方式引入该工具包:

Maven

Gradle

有些SpringBoot支持的库使用了缓存技术来提高性能。比如模板引擎会对编译好的模板进行缓存从而避免每次都要解析模板文件;Spring MVC也会为静态文件缓存一些Http的Header属性。

虽然在生产环境下面缓存能够极大地提高程序的性能,但是在开发阶段并不是很友好,所以 spring-boot-devtools 默认会禁用这些缓存。比如 spring-boot-devtools 会通过s pring.thymeleaf.cache属性来禁用Thymeleaf的缓存。

当我们使用IDE(例如Eclipse、IDEA等)开发SpringBoot项目时,当 spring-boot-devtools检测到项目 类路径下面有变化时会自动重启项目。

当然 spring-boot-devtools对此作了优化,它创建了两个classloader,一个base classloader用来加载那些依赖的第三方库的类,而项目中正在开发的类会被另一个restart classloader加载,这样每次项目重启,其实是重新创建一个新的restart classloader来加载项目中产生的类文件,因此比一般的项目启动会快很多。

spring-boot-devtools支持全局设置功能,默认位于$HOME/.config/spring-boot这个目录下的以下配置文件会被自动加载并且应用于这台机器上运行的所有SpringBoot项目($HOME表示当前用户的Home目录):

如果我们想开启SpringBoot项目的远程调试功能,需要在应用打包的时候把 spring-boot-devtools一起打包进去(默认spring-boot-devtools是不会被一起打包的,它只是开发期间的一个辅助包),比如Maven项目,我们可以这样设置:

启动本地应用的时候,需要选择main class为 org.springframework.boot.devtools.RemoteSpringApplication并且设置Program Arguments为http://ip:port(远程服务的地址)

spring-boot-devtools是基于shutdown钩子,应此不能将其设置为false(SpringApplication.setRegisterShutdownHook(false))

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.devtools

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网