springboot学习:《知识篇》开发者工具spring-boot-devtools(上)
1、开发者工具spring-boot-devtools
SpringBoot所提供的开发者工具spring-boot-devtools可以提高开发效率。
Maven使用:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
在运行一个完整封装APP时,开发者工具是自动关闭的。
2、默认属性
spring-boot-devtools默认使用caches,但是在开发过程中不利于观察所做的修改。在开发时,可以在application.properties文件中设置关闭cache选项。如spring.thymeleaf.cache=false。
如果需要在log中获得更多的细节信息,可以设置spring.http.log-request-details属性。
如果不使用默认属性设置,可以在application.properties中设置spring.devtools.add-properties=false。
3、自动重启
spring-boot-devtools的使用,会导致classpath路径上文件改变时重启。默认情况下,类路径上指向文件夹的任何条目都会被监视以进行更改。但是有些静态资源的改变,不会重启应用程序。
重启和重载:Spring Boot提供的重启技术通过使用两个类加载器来工作。不改变的类(例如,来自第三方jar的类)被加载到基类加载器中。正在积极开发的类将加载到重新启动的类加载器中。当应用程序重新启动时,restart类加载器将被丢弃,并创建一个新的类加载器。这种方法意味着应用程序重启通常比“冷启动”快得多,因为基本类加载器已经可用并已填充。 如果发现重新启动对应用程序来说不够快,或者遇到类加载问题,可以考虑从ZeroTurnaround重载JRebel等技术。这些工作是在加载类时重写类,以使它们更易于重新加载。
4、日志报告功能
使用spring-boot-devtools的app,在每次加载的时候,会在log中生成一个相关内容的报告。你可以通过spring.devtools.restart.log-condition-evaluation-delta=false来关闭该功能。
5、排除资源
默认,/META-INF/maven, /META-INF/resources, /resources, /static, /public, 或/templates下的文件修改不会触发重启,但是会导致动态重载。你可以通过spring.devtools.restart.exclude=static/**,public/**
来设置排除
/static 和/public下文件的改变。
通过spring.devtools.restart.additional-exclude
在保持默认设置的时候,添加额外的排除目录。