本文概述
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部分中看到以下目录。
步骤7:打开SpringBootDevtoolsExampleApplication.java并将其作为Java应用程序运行。
之后, 在应用程序中进行任何更改(编辑或删除一些文件或代码), 然后保存更改。保存更改后, 服务器将重新启动并接收更改。
下载专案
评论前必须登录!
注册