spring-boot-devtools
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
命令禁用
java -jar -Dspring.devtools.restart.enabled=false
禁用报表日志记录
spring.devtools.restart.log-condition-evaluation-delta=false
自定义这些排除项,不触发重新启动。
spring.devtools.restart.exclude=static/**,public/**
保留这些默认值并添加其他排除项
spring.devtools.restart.additional-exclude=
禁用重新启动
spring.devtools.restart.enabled=false
完全禁用重新启动
spring.devtools.restart.enabled=false
public static void main(String[] args) {
System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(MyApp.class, args);
}
使用触发器文件,请将 属性设置为触发器文件的名称(不包括任何路径)
spring.devtools.restart.trigger-file=.reloadtrigger
src/main/resources/.reloadtrigger
自定义重新启动类加载器,使用两个类加载程序实现重新启动功能。
restart.exclude.companycommonlibs=/mycorp-common-[\\w\\d-\.]+\.jar
restart.include.projectcommon=/mycorp-myproj-[\\w\\d-\.]+\.jar
已知限制
重新启动功能不能很好地与使用标准进行非活动化的对象使用。如果需要对数据进行去功能化,可能需要将 Spring 与 结合使用。ObjectInputStreamConfigurableObjectInputStreamThread.currentThread().getContextClassLoader()
不幸的是,几个第三方库在不考虑上下文类加载器的情况下去功能化。如果您发现此类问题,则需要请求原始作者的修复。
实时加载
该模块包括一个嵌入式 LiveReload 服务器,可用于在资源更改时触发浏览器刷新。LiveReload浏览器扩展版从浏览器和浏览器中免费提供给Chrome、Livereload.com。
spring-boot-devtools
如果不想在应用程序运行时启动 LiveReload 服务器,可以将 属性设置为 。
spring.devtools.livereload.enabled``false
您一次只能运行一个 LiveReload 服务器。在启动应用程序之前,请确保没有其他 LiveReload 服务器正在运行。如果从 IDE 启动多个应用程序,则只有第一个应用程序具有 LiveReload 支持。
全局设置
.spring-boot-devtools.properties
spring.devtools.reload.trigger-file=.reloadtrigger
配置文件系统监视程序
FileSystemWatcher的工作原理是,在一定的时间间隔内轮询类更改,然后等待预定义的安静周期,以确保不再有更改。然后将更改上载到远程应用程序。在较慢的发展环境中,可能会发生安静期不够,并且类中的更改可能会拆分为批。上载第一批类更改后,服务器将重新启动。由于服务器正在重新启动,因此无法将下一批批发送到应用程序。
这通常表现为日志中有关无法上载某些类的警告,以及随后的重试。但它也可能导致应用程序代码不一致,并在上载第一批更改后无法重新启动。
RemoteSpringApplication
# 轮流查询时间
spring.devtools.restart.poll-interval=2s
# 等待时间
spring.devtools.restart.quiet-period=1s