想要使用devtools支持,只需使用dependencies将模块依赖关系添加到你的构建中java
java -jar
或者其余特殊的类加载器进行启动时,都会被认为是“生产环境的应用”。Spring Boot 支持的一些库中会使用缓存来提升性能。例如模版引擎将缓存编译后的模板,以免重复解析模板文件。 此外,Spring MVC能够在服务静态资源时向响应中添加HTTP缓存头。正则表达式
虽然缓存在生产中很是有益,但它在开发过程当中可能会产生反效果,它会阻止你看到刚刚在应用程序中进行的更改。 所以,spring-boot-devtools将默认禁用这些缓存选项 spring
application.properties
文件中配置。 例如,Thymeleaf提供了spring.thymeleaf.cache
属性。spring-boot-devtools
模块不须要手动设置这些属性,而是自动应用合理的开发时配置。spring-boot-devtools
会在类路径上的文件发生更改时自动重启。
若是不想使用重启功能,可使用spring.devtools.restart.enabled属性来禁用它。 在大多数状况下,你能够在application.properties中设置此项(这仍将初始化重启类加载器,但不会监视文件更改)。浏览器
例如,若是你须要彻底禁用重启支持,由于它不适用于特定库,则须要在调用SpringApplication.run(…)以前设置System属性。 例如缓存
public static void main(String[] args) { System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(MyApp.class, args); }
若是你使用自动编译已更改文件的IDE,则可能但愿仅在特定时间触发重启。 为此,你可使用“触发文件”,这是一个特殊文件,当你要实际触发重启检查时,必须修改它。 更改文件只会触发检查,只有在Devtools检测到它必须执行某些操做时才会重启。 触发文件能够手动更新,也能够经过IDE插件更新。服务器
要使用触发器文件,请使用spring.devtools.restart.trigger-file属性。 app
如上面从新启动和从新加载部分所述,重启功能是经过使用两个类加载器实现的。 对于大多数应用程序,此方法运行良好,但有时可能会致使类加载问题。maven
默认状况下,IDE中的任何打开的项目都会使用“restart”类加载器加载,任何常规.jar文件将使用“base”类加载器加载。 若是你在多模块项目上工做,但不是每一个模块都导入到IDE中,则可能须要自定义配置。 为此,你能够建立一个META-INF/spring-devtools.properties文件。spring-boot
spring-devtools.properties文件能够包含restart.exclude. 和restart.include. 前缀的属性。 include元素是应该被放入“restart”类加载器的项目, exclude元素是应该放入“base”类加载器的项目。 属性的值是应用于类路径下的正则表达式。工具
例如:
restart.exclude.companycommonlibs=/mycorp-common-[\\w-]+\.jar restart.include.projectcommon=/mycorp-myproj-[\\w-]+\.jar 针对通用Mapper,能够作以下配置: restart.include.mapper=/mapper-[\\w-\\.]+jar 全部属性的键值(名字,companycommonlibs 部分)必须是惟一的,只有 restart.exclude. 和 restart.include. 开头的属性有效。 全部类路径下面的 META-INF/spring-devtools.properties 配置文件都会生效,因此你能够把该配置打包到每一个模块中。 注:新版本的Mapper(3.4.1+)会默认增长该配置。
重启功能对使用标准ObjectInputStream对象序列化的对象不是很好 。若是须要反序列化数据,可能须要使用Spring的ConfigurableObjectInputStream配合Thread.currentThread().getContextClassLoader() 使用。
不幸的是,一些第三方库都不考虑在使用上下文类加载器的状况下反序列化。 若是你发现这样的问题,你须要向原做者请求修复。
spring-boot-devtools模块包含嵌入式LiveReload服务器,能够在资源更改时用于触发浏览器刷新。 LiveReload浏览器扩展程序支持Chrome,Firefox和Safari,你能够从livereload.com免费下载。
若是你不想在应用程序运行时启动LiveReload服务器,则能够将spring.devtools.livereload.enabled属性设置为false 。
同一时间只能运行一个LiveReload服务器。 开始应用程序以前,请确保没有其余LiveReload服务器正在运行。若是从IDE启动多个应用程序,则只有第一个应用程序将支持LiveReload。
你能够经过向$HOME文件夹添加名为.spring-boot-devtools.properties的文件来配置全局devtools设置(请注意,文件名以“.”开头)。 添加到此文件的任何属性将适用于你的计算机上使用devtools的全部 Spring Boot应用程序。 例如,要配置重启始终使用触发器文件 ,你能够添加如下内容:
〜/ .spring-boot-devtools.properties。
spring.devtools.reload.trigger-file=.reloadtrigger
optional
可选是一种最佳作法,能够防止将devtools依赖传递到其余模块中 <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>