20.2.4禁用重启
如果您不想使用重新启动功能,可以使用该spring.devtools.restart.enabled
属性将其禁用。在大多数情况下,您可以在您的设置中设置此属性application.properties
(这样做仍会初始化重新启动的类加载器,但它不会监视文件更改)。
如果需要完全禁用重新启动支持(例如,因为它不能与特定库一起使用),则需要在调用之前将spring.devtools.restart.enabled
System
属性设置为,如以下示例所示:false
SpringApplication.run(…)
public static void main(String[] args) {System.setProperty("spring.devtools.restart.enabled", "false");SpringApplication.run(MyApp.class, args);}
20.2.5使用触发文件
如果使用不断编译已更改文件的IDE,则可能更喜欢仅在特定时间触发重新启动。为此,您可以使用“触发器文件”,这是一个特殊文件,当您想要实际触发重新启动检查时必须对其进行修改。更改文件只会触发检查,只有在Devtools检测到必须执行某些操作时才会重新启动。触发器文件可以手动更新,也可以使用IDE插件更新。
要使用触发器文件,请将该spring.devtools.restart.trigger-file
属性设置为触发器文件的路径。
20.2.6自定义重启类加载器
如前面在Restart vs Reload部分中所述,使用两个类加载器实现了重启功能。对于大多数应用程序,此方法运行良好。但是,它有时会导致类加载问题。
默认情况下,IDE中的任何打开项目都使用“restart”类加载器加载,并且任何常规.jar
文件都使用“base”类加载器加载。如果您处理多模块项目,并且并非每个模块都导入到IDE中,则可能需要自定义内容。为此,您可以创建一个META-INF/spring-devtools.properties
文件。
该spring-devtools.properties
文件可以包含前缀为restart.exclude
和的属性restart.include
。该include
元素是应该被拉高到“重启”的类加载器的项目,以及exclude
要素是应该向下推入“基地”类加载器的项目。该属性的值是应用于类路径的正则表达式模式,如以下示例所示:
panycommonlibs=/mycorp-common-[\\w-]+\.jarrestart.include.projectcommon=/mycorp-myproj-[\\w-]+\.jar
20.2.7已知限制
重新启动功能不适用于使用标准反序列化的对象ObjectInputStream
。如果你需要反序列化的数据,你可能需要使用Spring的ConfigurableObjectInputStream
结合Thread.currentThread().getContextClassLoader()
。
不幸的是,几个第三方库反序列化而没有考虑上下文类加载器。如果您发现此类问题,则需要向原始作者请求修复。
20.3 LiveReload
该spring-boot-devtools
模块包括一个嵌入式LiveReload服务器,可用于在更改资源时触发浏览器刷新。LiveReload浏览器扩展程序可从免费用于Chrome,Firefox和Safari。
如果您不想在应用程序运行时启动LiveReload服务器,则可以将spring.devtools.livereload.enabled
属性设置为false
。
20.4全局设置
您可以通过添加一个文件名为配置全局devtools设置.spring-boot-devtools.properties
你的$HOME
文件夹(注意:文件名开头“”)。添加到此文件的任何属性都适用于计算机上使用devtools的所有Spring Boot应用程序。例如,要将restart配置为始终使用触发器文件,您需要添加以下属性:
〜/ .spring引导-devtools.properties。
spring.devtools.reload.trigger-file=.reloadtrigger