如果您想保留这些默认值并
添加
额外的排除项,请改用该 spring.devtools.restart.additional-exclude属性。
20.2.2看额外的路径看额外的路径
您可能希望在更改不在类路径中的文件时重新启动或重新加载应用程序。为此,请使用该 spring.devtools.restart.additional-paths属性来配置其他路径以查看更改。您可以使
用spring.devtools.restart.exclude属性 上述控制的其他路径下的变化是否会引发全面重启或只是一个 活的重载。
20.2.3禁用重启禁用重启
如果您不想使用重新启动功能,则可以使用该spring.devtools.restart.enabled属性将其禁用 。在大多数情况下,你可以在你的设置 application.properties(这将仍然初始化重启类加载器,但它不
会监视文件的变化)。
如果您需要
完全
禁用重新启动支持,例如,因为它不适用于特定的库,则需要System在调用之前设置属性 SpringApplication.run(…)。例如:
public static void main(String [] args){
System.setProperty(“spring.devtools.restart.enabled”,“false”);
SpringApplication.run(MyApp的类,参数);
}
20.2.4使用触发文件使用触发文件
如果您使用连续编译已更改文件的IDE,则可能只希望在特定时间触发重新启动。要做到这一点,你可以使用“触发文件”,这是一个特殊的文件,当你想要实际触发重启检查时,必须修改它。只更改文件
会触发检查,只有Devtools检测到必须执行某些操作时才会重新启动。触发文件可以手动更新,也可以通过IDE插件进行更新。
要使用触发器文件,请使用该spring.devtools.restart.trigger-file属性。
小费小费
您可能希望将其设置spring.devtools.restart.trigger-file为 全局设置,以便所有项目的行为方式相同。
20.2.5定制重启定制重启classloader
如上面的重新启动vs重新加载部分所述,重新启动功能是通过使用两个类加载器来实现的。对于大多数应用程序来说,这种方法运行良好,但有时候会导致类加载问题。
默认情况下,IDE中的任何打开的项目都将使用“重新启动”类加载器来加载,而任何常规.jar文件将使用“基本”类加载器加载。如果您使用多模块项目,而不是将每个模块导入IDE,则可能需要自定义项
目。要做到这一点,你可以创建一个META-INF/spring-devtools.properties文件。
该spring-devtools.properties文件可以包含restart.exclude.和 restart.include.前缀的属性。这些include元素是应该被拉入到“重启”类加载器exclude中的项目,而元素是应该被下推到“基本”类加
载器中的项目。该属性的值是一个将应用于类路径的正则表达式模式。
例如:
restart.exclude.companycommonlibs = / MyCorp的共用- [\\瓦特- ]。+ \罐子
restart.include.projectcommon = / MyCorp的-的Myproj - [\\瓦特- ]。+ \罐
注意注意
所有的财产钥匙必须是唯一的。只要财产始于 restart.include.或restart.exclude.将被考虑。
小费小费
所有META-INF/spring-devtools.properties来自classpath的将被加载。您可以将文件打包到项目中,也可以打包到项目使用的库中。
20.2.6已知的限制已知的限制
对于使用标准进行反序列化的对象,重新启动功能无法正常工作ObjectInputStream。如果你需要反序列化数据,你可能需要ConfigurableObjectInputStream结合Spring 使用
Thread.currentThread().getContextClassLoader()。
不幸的是,有些第三方库反序列化,而不考虑上下文类加载器。如果您发现这样的问题,您需要向原作者请求修复。
20.3 LiveReload
该spring-boot-devtools模块包含一个嵌入式LiveReload服务器,可用于在更改资源时触发浏览器刷新。LiveReload浏览器扩展可从livereload.com的 Chrome,Firefox和Safari免费获得 。
如果您不想在应用程序运行时启动LiveReload服务器,则可以将该spring.devtools.livereload.enabled属性设置为false。
注意注意
一次只能运行一个LiveReload服务器,如果从IDE启动多个应用程序,则只有第一个应用程序具有对livereload的支持。
20.4全局设置全局设置
您可以通过添加一个文件名为配置全局devtools设置 .spring-boot-devtools.properties你的$HOME文件夹(注意:文件名开头“”)。添加到此文件的任何属性都将应用于使用devtools的计算机上的
所有
Spring Boot应用程序。例如,要将重新启动配置为始终使用触发器文件,可以添加以下内容:
〜〜 / .spring引导引导 -devtools.properties。。
spring.devtools.reload.trigger-file = .reloadtrigger
20.5远程应用程序远程应用程序
Spring Boot开发者工具不仅限于本地开发。您还可以在远程运行应用程序时使用多个功能。远程支持是选择性的,为了启用它,你需要设置一个spring.devtools.remote.secret属性。例如:
spring.devtools.remote.secret = mysecret
警告警告
启用spring-boot-devtools远程应用程序是一个安全风险。您不应该在生产部署上启用支持。
远程devtools支持分两部分提供; 有一个接受连接的服务器端点以及您在IDE中运行的客户端应用程序。在spring.devtools.remote.secret设置属性时,服务器组件会自动启用。客户端组件必须手动启
动。
20.5.1运行远程客户端应用程序运行远程客户端应用程序
远程客户端应用程序旨在从您的IDE内运行。您需要org.springframework.boot.devtools.RemoteSpringApplication使用与您要连接的远程项目相同的类路径运行 。传递给应用程序的
非选项
参数应该是
您要连接到的远程URL。
例如,如果您正在使用Eclipse或STS,并且您有一个my-app已经部署到Cloud Foundry的项目,则可以执行以下操作:
选择Run Configurations…从Run菜单。
创建一个新的Java Application“启动配置”。
浏览该my-app项目。
使用org.springframework.boot.devtools.RemoteSpringApplication作为主类。
添加https://myapp.cfapps.io到Program arguments(或任何您的远程URL是)。
正在运行的远程客户端将如下所示:
。
(_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ \ ___ _ __ ___ | | _ ___ \ \ \ \
\ / / ___)| | _)| | | | | || (_ | [] :::::: [] / -_)'\ / _ \ _ / -_)))))
'| ____ | .__ | _ | | _ | _ | | _ \ __,| | _ | _ \ ___ | _ | _ | _ \ ___ / \ __ \ ___ | / / /
========= | _ | ============== | ___ / =================================== / _ / _ / _ /
:: Spring Boot Remote :: 1.4.1.RELEASE