Spring Boot开发工具的使用
Spring-boot-devtools给开发带来了很多便利。本文总结了它的一些用途。
要使用devtools,首先需要添加模块依赖。Maven和Gradle的配置如下:
Maven:
格拉德:
当运行完全打包的应用程序时,开发工具将被禁用。当使用java -jar或特殊的类加载器运行时,它将被视为一个生产环境。专家
Spring Boot的一些图书馆将通过缓存来提高性能。比如模块引擎缓存编译后的模板,避免重复解析模板文件;Spring MVC在响应静态资源时设置HTTP缓存头。
启用缓存在开发环境中非常有用,但在生产环境中却适得其反。所以spring-boot-devtools会默认为我们禁用缓存,而不是手动禁用。
同时,开发工具还会将Web日志的级别设置为DEBUG,这样你就可以看到更详细的请求和响应信息。如果您想要记录所有请求细节(包括可能的敏感信息),您可以启用spring。http . log-请求-详细信息。
如果不想使用默认配置,可以将spring.devtools.add-properties设置为false。
当类路径上的文件被修改时,使用spring-boot-devtools的应用程序将自动重启。在开发过程中,这将是一个有用的功能,因为你可以很快看到修改引起的变化。
因为DevTools监视类路径资源,所以触发重启的唯一方法是更新类路径。在Eclipse中,文件默认修改保存时会自动编译,从而触发类路径更新,而在IntelliJ中,则需要手动构建项目(build->;构建项目)。当然,在IntelliJ中也可以设置自动编译,但我觉得没必要。
Devtools通过两个类加载器重启。对于不会被修改的类,比如第三方库,使用基类加载器,用户编辑的类使用重启类加载器。当应用程序重启时,重启类加载器将被丢弃,并创建一个新的类加载器,这将加速重启。如果觉得重启不够快,可以考虑使用JRebel,通过重载类实现热更新。
默认情况下,每次重新启动应用程序时,都会输出一个增量条件评估报告。此报告显示修改应用程序时自动配置的变化,例如添加或删除Bean以及配置属性。
添加以下配置以关闭该日志:
一些资源在被更改时不需要触发重启。默认情况下,当修改/META-INF/maven、/META-INF/resources、/resources、/static、/public或/templates中的资源时,不会触发重启(但是会触发live reload,见下文)。
如果您想要定制需要排除的目录,您可以通过spring配置它们。devtools.restart.exclude属性(逗号分隔多个目录)。如果您想保持默认配置并排除其他目录,您可以通过spring配置它。dev tools . restart . additional-exclude属性。
可以配置额外的路径来通过spring监听变化。dev tools . restart . additional-paths。
如果不想用重启功能,可以通过弹簧设置。devtools.restart.enabled属性。大多数情况下可以直接在application.properties中设置,如果想完全禁用重启,需要在调用SpringApplication.run(…)之前将spring . dev tools . restart . enabled system的属性设置为false:
如果您使用一个不断编译更改文件的IDE,您可能更喜欢只在特定的时间触发重新启动。我们可以使用“触发文件”,这是一个特殊的文件,当我们想要实际触发重启检查时,必须对其进行修改。更改文件只会触发检查,并且只有当Devtools检测到必须执行某些操作时才会重新启动。触发器文件可以手动更新,也可以使用IDE插件更新。
将spring . dev tools . restart . trigger-file属性设置为触发器文件路径。
Spring-boot-devtools模块包含一个嵌入式的LiveReload服务器,可以用来在资源发生变化时触发浏览器刷新。浏览器需要安装LiveReload插件。
如果您不想启用LiveReload服务器,请设置spring的属性。devtools.livereload.enabled为false。
一次只能运行一个LiveReload服务器。如果从IDE启动多个应用程序,只有第一个应用程序具有LiveReload功能。
在$HOME目录下创建一个. spring-boot-devtools . properties文件,并在其中添加全局dev tools设置。添加到此文件中的任何属性都将应用于在此计算机上使用devtools的所有Spring Boot应用程序。