Spring Boot DevTools
Spring Boot 1.3提供了另一个名为Spring Boot DevTools的模块。 DevTools代表 Developer Tool 。该模块的目的是在使用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 设置为 来禁用服务器的自动重启。错误。
记住:
- DevTools始终监视类路径资源。
- 触发重启的唯一方法是更新类路径。
- DevTools需要单独的应用程序类加载器才能正常工作。默认情况下,Maven派生应用程序进程。
- 自动重新启动与 LiveReload一起很好地工作。
- DevTools依赖于应用程序上下文的关闭挂钩在重新启动期间将其关闭。
LiveReload: Spring Boot DevTools模块包括一个名为 LiveReload的嵌入式服务器。,只要我们在其中进行更改,该应用程序就可以自动触发浏览器刷新。资源。这也称为 自动刷新。
注意: 我们可以通过设置属性 spring.devtools.livereload来禁用LiveReload。启用为 false。
它提供了适用于Chrome,Firefox和Safari的浏览器扩展。默认情况下,启用LiveReload。 LiveReload在以下路径上工作:
- /META-INF/maven
- /META-INF/resources
- /资源
- /静态
- /public
- /模板
我们还可以通过排除上述路径来禁用浏览器中的自动重新加载。例如:
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 Cloud提供商。
远程更新和重新启动: DevTools提供的另一个技巧是: 它支持远程应用程序 更新和 重新启动。它监视本地类路径中的文件更改,并将其推送到远程服务器,然后重新启动。我们还可以将此功能与LiveReload结合使用。
使用触发文件
由于频繁的重启,自动重启有时会减慢开发时间。为了解决这个问题,我们可以使用一个 触发文件。。SpringBoot监视触发文件并检测该文件中的修改。它会重新启动服务器并重新加载所有先前的更改。
我们可以通过添加属性 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/。
步骤2: 提供 组名称和 工件 ID。我们提供了组名 com.codebaoku 和工件ID spring-boot-devtools-example。
步骤3: 添加以下依赖项: spring-boot-starter-web 和 spring-boot-devtools 。
步骤4: 点击 生成按钮。它将下载项目的 Jar 文件。
步骤5: 提取Jar文件。
步骤6: 将文件夹导入STS。
文件->导入->现有Maven项目->浏览->选择文件夹spring-boot-devtools-example->完成
导入成功后,我们可以在STS的Package Explorer部分中看到以下目录。
步骤7: 打开 SpringBootDevtoolsExampleApplication.java 并将其作为Java应用程序运行。
然后,在应用程序中进行任何更改(编辑或删除一些文件或代码),然后保存所做的更改。保存更改后,服务器将重新启动并获取更改。
Multi-Module项目包含嵌套Maven项目的Spring Boot项目称为 多模块项目。在多模块项目中,父项目充当基础Maven配置的容器。换句话说, 多模块项目是从管理一组子模块的父pom构建的 ...