【Spring Boot】使用Maven工具自动重启SpringBoot项目

您所在的位置:网站首页 spring热启动 【Spring Boot】使用Maven工具自动重启SpringBoot项目

【Spring Boot】使用Maven工具自动重启SpringBoot项目

2024-07-11 10:27:49| 来源: 网络整理| 查看: 265

文章目录 使用的软件配置开发者工具在浏览器中安装`LiveReload`自动重启自定义监听路径使用触发器文件剔除资源禁用重新启动1. 使用应用程序属性文件2. 在调用 SpringApplication.run() 之前使用系统属性,如下所示。 自动重新启动中常用的属性参考文献下载源码

本页将介绍Spring Boot使用maven的开发工具自动重启的情况。

当我们的应用程序使用spring boot开发者工具时,只要在开发模式下修改类路径中的文件,它就会自动重启服务器并刷新浏览器页面。

我们使用spring boot maven命令mvn spring-boot:run运行我们的分解形式的项目。

Spring boot开发工具是spring-boot-devtools,需要在maven或gradle中配置。

开发者工具用于快速开发。

当我们在IDE中使用分解形式的项目时,在修改了任何文件后,我们需要测试我们的应用程序。

为了节省开发时间,有许多插件,如JRebel,可以使用类加载器重新加载文件的变化。

Spring boot也提供了一个工具来帮助开发者快速开发,这就是spring-boot-devtools。

在这里,我们将了解开发者工具的一个功能,即在类路径中的任何文件发生变化时,自动重启服务器以及在浏览器上刷新页面。

为了获得页面刷新,我们需要在浏览器中安装LiveReload。

开发者工具提供了许多属性,这些属性将被配置在应用程序的属性文件中以控制自动重启。

现在我们将提供一个例子,一步一步地使用开发者工具进行自动重启。

使用的软件 Java 8Maven 3.3.9Spring Boot 1.4.3.RELEASEEclipse Mars 配置开发者工具

Spring提供了spring-boot-devtools的开发者工具。

这些工具在应用开发模式中很有帮助。

开发者工具的一个特点是自动重启服务器。要使用maven配置开发者工具,我们需要添加spring-boot-devtools的依赖关系,如下所示。

org.springframework.boot spring-boot-devtools true

如果我们使用Gradle,我们将添加spring-boot-devtools的依赖项,如下所示。

compile("org.springframework.boot:spring-boot-devtools")

在使用开发者工具时,我们应该知道以下几点。 1. 当我们创建一个JAR或WAR作为完全打包的应用程序并运行它时,开发人员工具就会自动被禁用。

2. 当我们使用java -jar或特殊类加载器运行应用程序时,它被认为是一个“生产项目(production application)”,开发工具将被自动禁用。

3. 最佳做法是设置为true,这样可以避免开发人员工具在其他模块上传递应用。Gradle目前不支持此功能。

4. 我们还可以在maven和gradle中使用excludeDevtools,以确保开发人员工具JAR永远不会包含在生产构建中。

5. 配置开发人员工具后,使用restartclassloader启动分解形式的项目,并通过springboot使用base类加载器启动完全打包的应用程序。

在浏览器中安装LiveReload

在spring MVC项目中,有一个网络服务器和浏览器的参与。

在开发模式下,每当我们改变任何文件时,通常需要重新启动服务器并刷新浏览器以获得更新的数据。

Spring boot开发工具已经将这两项任务自动化。

为了自动刷新浏览器,我们需要安装LiveReload。

在我们的例子中,我使用的是Firefox。

我需要在我的Firefox中安装LiveReload。

按照下面的步骤,准备好LiveReload。

1. 进入LiveReload扩展链接并安装它。

2. 要使用LiveReload,我们需要运行LiveReload服务器。对于我们来说,spring boot开发工具将启动一个LiveReload服务器。

3. LiveReload可以被启用和禁用。要使用LiveReload刷新页面,必须启用它。

4. 在我的例子中,我在Firefox中使用LiveReload。要启用它,首先进入Firefox的自定义视图,从那里将LiveReload添加到工具栏。现在,右击LiveReload图标并启用它。在启用它之前,确保maven 的 mvn spring-boot:run命令正在运行,这将启动tomcat和LiveReload服务器。

自动重启

Spring boot的开发者工具有一个功能,每当类路径上的文件被修改,就会自动重启服务器并刷新浏览器页面。

一旦我们在maven或gradle中配置了开发者工具,那么在eclipse中修改文件后,当我们保存时,自动重启功能就会启动。

所有在类路径中的文件都不需要服务器重启。

很多文件只需要在浏览器上刷新页面就可以完成任何修改。

当我们对java文件进行任何修改并保存时,服务器重启和浏览器刷新都需要。

有些文件不需要服务器重启,只需要在浏览器上刷新页面,例如静态页面、Thymeleaf模板、HTML页面等。

对于类路径上同样需要在浏览器上安装LiveReload的以下路径,Spring boot开发工具默认只在浏览器上执行页面刷新。

这些目录模式如下。

/META-INF/maven /META-INF/resources /resources /static /public /templates

现在我们将用Spring MVC和Thymeleaf创建一个示例应用程序。这里我们还将创建一些不在类路径中的文件。找到项目结构。 在这里插入图片描述 位于类路径中的文件如下所示。 1. Java文件:在浏览器上自动重启服务器和刷新页面

src\main\java\com\concretepage\Application.java src\main\java\com\concretepage\controller\HelloController.java

2. 资源文件:默认情况下,仅在浏览器上自动刷新页面

src\main\resources\static\index.html src\main\resources\templates\hello.html src\main\resources\application.properties

我们还创建了一些不在类路径中的文件。

files\apptrigger.txt files\txt\txtfile.txt

现在找到我们的maven配置文件。

pom.xml

4.0.0 com.concretepage spring-demo 0.0.1-SNAPSHOT jar Spring Boot Automatic Restart org.springframework.boot spring-boot-starter-parent 1.4.3.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-devtools true org.springframework.boot spring-boot-maven-plugin

测试自动重启的步骤。 1. 使用链接下载我的演示项目源代码并将其导入eclipse。

2. 使用命令提示符进入项目的根目录,运行命令mvn clean eclipse:eclipse并刷新eclipse中的项目文件夹。这将创建一个类路径文件。

3. 现在运行命令mvn spring-boot:run,这将启动一个Tomcat服务器。或者在IDE中进入主类。右键单击并Run As -> Java Application

4. 现在进入浏览器,访问 http://localhost:8080/或http://localhost:8080/hello。

5. 点击浏览器工具栏菜单上的LiveReload图标,启用自动刷新页面。

6. 现在改变java文件中的一些内容并保存。我们将观察到,服务器将重新启动,浏览器上的页面将刷新。

7. 现在改变HTML文件中的内容。我们将观察到,只有浏览器上的页面会刷新,而服务器不会重新启动。

自定义监听路径

到目前为止,我们已经了解到SpringBoot开发者工具只监听位于类路径下的文件,以便自动重新启动。

现在我们将包括那些不在类路径中的文件。

在我们的项目中,我们在包含以下文件的类路径之外创建了一个名为files的目录。

files\apptrigger.txt files\txt\txtfile.txt

尽管文件目录不在类路径中,但它仍然可以利用自动重启的优势。

为了实现它,SpringBoot提供了需要在应用程序属性文件中配置的属性,如下所示。

application.properties

spring.devtools.restart.additional-paths = files

这里的文件是我在项目的根目录下创建的目录。

配置完属性后,我们需要重新运行命令mvn spring-boot:run,现在通过改变文件apptrigger.txt或txtfile.txt中的内容来测试自动重启,并保存它,我们将观察到服务器将重启,页面将在浏览器上刷新。

使用触发器文件

Spring boot提供了一个配置触发器文件的属性,以实现如果触发器文件被修改时,开发工具才会开始监听文件变化。

在使用IDE的开发模式中,我们经常改变文件并保存它。

为了避免不必要的自动重启,我们可以使用一个触发器文件。

每当我们修改触发器文件时,只有当开发工具监听到文件的任何变化,如果文件有任何变化,自动重启就会启动。

触发器文件可以手动修改,也可以使用IDE插件。为了配置触发文件,spring boot提供了spring.devtools.restart.trigger-file属性,可以按以下方式配置。

application.properties

spring.devtools.restart.additional-paths = files spring.devtools.restart.trigger-file = apptrigger.txt

在上述配置中,apptrigger.txt是我们的触发器文件,它位于files/apptrigger.txt路径上。找到下面的步骤来测试触发器文件。

1. 首先重新运行命令mvn spring-boot:run

2. 现在修改任何文件,假设我正在修改任何java文件,例如HelloController.java,然后修改触发器文件,即apptrigger.txt。我们将观察到,自动重启将被启动。

3. 我们需要明白,如果我们只修改apptrigger.txt,那么就不会有自动重启。这是因为当我们修改触发器文件apptrigger.txt时,开发工具会开始观察文件的任何变化,由于我们没有修改其他文件,所以自动重启不会发生。

剔除资源

对于位于类路径下的文件,spring boot开发工具会关注完全自动重启,但文件夹结构为/META-INF/maven、/META-INF/resources、/resources、/static、/public或/templates的模板和静态文件,默认只获得页面刷新。

我们可以打破模板和静态文件的默认设置,实现完全自动重启。为了实现这一点,我们需要配置spring.devtools.restart.exclude属性,如下所示。

application.properties

spring.devtools.restart.exclude = static/**

让我们了解现在将发生什么。

1. 首先重新运行命令mvn spring-boot:run

2. 现在,如果我们修改文件templates\hello.html,开发工具将自动重新启动服务器,并刷新页面。

3. 如果我们修改文件static\index.html,开发工具将只刷新页面。

4. 如果我们想把更多的文件夹排除在完全自动重启之外,我们可以配置逗号分隔,如下所示。

spring.devtools.restart.exclude=static/**,templates/** 禁用重新启动

如果我们想从开发工具中禁用自动重启功能,我们可以通过两种方式配置spring.devtools.restart.enabled属性来实现。

1. 使用应用程序属性文件

application.properties

spring.devtools.restart.enabled = false

在这种情况下,开发人员工具将初始化重启类加载器,但不会监视文件更改。

2. 在调用 SpringApplication.run() 之前使用系统属性,如下所示。 @SpringBootApplication public class Application { public static void main(String[] args) { System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(Application.class, args); } }

在这种情况下,开发工具不会初始化重启类加载器,也不会监听文件变化。因此,自动重启被完全禁用。

自动重新启动中常用的属性

这里我们列出了用于自动重启的有用的开发工具属性。这些属性是在application.properties文件中配置的。 spring.devtools.restart.additional-paths: 添加不在类路径中的自动重启路径。

spring.devtools.restart.trigger-file: 指定一个触发器文件名,现在开发人员工具仅在修改触发器文件时才监听重新启动检查。

spring.devtools.restart.exclude: 指定路径,将文件排除在完全自动重启之外。

spring.devtools.restart.additional-exclude: 指定将被排除在完全自动重启之外的其他路径,保持默认设置。

spring.devtools.restart.enabled: 如果值为false,那么开发者工具将停止监听自动重启的文件。

现在我们将提供用于定制重启加载器的属性,这些属性将被配置在META-INF/spring-devtools.properties文件中。 restart.include. : 它是一个前缀,我们使用它来声明一个属性,并通过正则表达式模式来指定JAR的名称,以便将一个JAR从基础类加载器包含到重启类加载器。

restart.exclude. : 它是一个前缀,我们使用它声明一个属性,并使用正则表达式模式分配JAR名称,以将JAR从重新启动类加载器排除到基本类加载器。

参考文献

【1】Using Spring Boot: Developer tools 【2】Spring Boot Automatic Restart using Developer Tools with Maven

下载源码

spring-boot-automatic-restart-using-developer-tools-with-maven.zip



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭