个性化阅读
专注于IT技术分析

Spring Boot DevTools用法示例图解

本文概述

Spring Boot DevTools

Spring Boot 1.3提供了另一个名为Spring Boot DevTools的模块。 DevTools代表开发人员工具。该模块的目的是在使用Spring Boot应用程序时尝试并缩短开发时间。 Spring Boot DevTools接受更改并重新启动应用程序。

通过在pom.xml文件中添加以下依赖项, 我们可以在项目中实现DevTools。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime<scope >
</dependency>

Spring Boot DevTools功能

Spring Boot DevTools提供以下功能:

  • 属性默认值
  • 自动重启
  • LiveReload
  • 远程调试隧道
  • 远程更新和重启

属性默认值:Spring Boot提供了模板技术Thymeleaf, 其中包含属性spring.thymeleaf.cache。它禁用了缓存, 并允许我们更新页面而无需重新启动应用程序。但是在开发过程中设置这些属性总是会带来一些问题。

使用spring-boot-devtools模块时, 不需要设置属性。在Thymeleaf, Freemarker, Groovy模板的开发缓存期间, 将自动禁用。

注意:如果我们不想在应用程序上应用属性默认值, 可以在application.properties文件中将configprop:spring.devtools.add-properties []设置为false。

自动重启:自动重启意味着重新加载Java类并在服务器端对其进行配置。服务器端更改后, 它会动态部署, 服务器会重新启动, 并加载修改后的代码。它主要用于基于微服务的应用程序。 Spring Boot使用两种类型的ClassLoader:

  • 不变的类(三分之三)将加载到基本ClassLoader中。
  • 我们正在积极开发的类将在重新启动ClassLoader中加载。

当应用程序重新启动时, 重新启动的ClassLoader被丢弃, 并填充了一个新的类。因此, 基本的ClassLoader始终可用并已填充。

我们可以通过将spring.devtools.restart.enabled属性设置为false来禁用服务器的自动重启。

记得:

  • DevTools始终监视类路径资源。
  • 触发重启的唯一方法是更新类路径。
  • DevTools需要单独的应用程序类加载器才能正常工作。默认情况下, Maven派生应用程序进程。
  • 自动重启可与LiveReload一起很好地工作。
  • DevTools依赖于应用程序上下文的关闭挂钩在重新启动期间将其关闭。

LiveReload:Spring Boot DevTools模块包括一个称为LiveReload的嵌入式服务器。每当我们更改资源时, 它都允许应用程序自动触发浏览器刷新。也称为自动刷新。

注意:我们可以通过将spring.devtools.livereload.enabled属性设置为false来禁用LiveReload。

它提供了适用于Chrome, Firefox和Safari的浏览器扩展。默认情况下, 启用LiveReload。 LiveReload在以下路径上工作:

  • / META-INF /行家
  • / META-INF /资源
  • /资源
  • /静态的
  • /上市
  • /模板

我们还可以通过排除上述路径来禁用浏览器中的自动重新加载。例如:

spring.devtools.restart.exclude=public/**, static/**, templates/**

我们可以通过使用spring.devtools.restart.additional-paths属性来查看其他附加路径。例如:

spring.devtools.restart.additional-paths=/path-to-folder

如果我们要排除其他路径并希望保留默认路径, 请使用属性spring.devtools.restart.additional-exclude。例如:

spring.devtools.restart.additional-exclude=styles/**

记得

  • 我们可以一次运行一台LiveReload服务器。
  • 在启动应用程序之前, 请确保没有其他LiveReload服务器正在运行。
  • 如果我们从IDE启动多个应用程序, 则它仅支持第一个LiveReload。

远程调试隧道:Spring Boot可以通过HTTP将JDWP(Java调试线协议)直接隧道到应用程序。它甚至可以将应用程序部署到仅公开端口80和443的Internet云提供商。

远程更新和重新启动:DevTools提供的另一个技巧是:它支持远程应用程序更新和重新启动。它监视本地类路径中的文件更改, 并将它们推送到远程服务器, 然后重新启动。我们也可以将此功能与LiveReload结合使用。

使用触发文件

由于频繁的重启, 自动重启有时会减慢开发时间。要解决此问题, 我们可以使用触发文件。 Spring Boot监视触发文件并检测该文件中的修改。它重新启动服务器并重新加载所有先前的更改。

我们可以通过添加属性spring.devtools.restart.trigger-file在我们的应用程序中实现触发文件。该文件可以是内部文件, 也可以是外部文件。例如:

spring.devtools.restart.trigger-file=c:/workspace-sts-3.9.9.RELEASE/restart-trigger.txt

Spring Boot DevTools示例

步骤1:使用Spring Initializr https://start.spring.io/创建一个Maven项目。

步骤2:提供群组名称和工件ID。我们提供了组名com.srcmini和工件ID spring-boot-devtools-example。

步骤3:添加以下依赖项:spring-boot-starter-web和spring-boot-devtools。

步骤4:点击Generate(生成)按钮。下载项目的Jar文件。

步骤5:提取Jar文件。

步骤6:将文件夹导入STS。导入需要时间。

文件->导入->现有Maven项目->浏览->选择文件夹spring-boot-devtools-example->完成

当项目成功导入后, 我们可以在STS的Package Explorer部分中看到以下目录。

Spring Boot DevTools

步骤7:打开SpringBootDevtoolsExampleApplication.java并将其作为Java应用程序运行。

之后, 在应用程序中进行任何更改(编辑或删除一些文件或代码), 然后保存更改。保存更改后, 服务器将重新启动并接收更改。

Spring Boot DevTools

下载专案


赞(0) 打赏
未经允许不得转载:srcmini » Spring Boot DevTools用法示例图解
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏