SpringBoot之devtools热部署

spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是比速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。

其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为  restart ClassLoader

,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restartClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)。

添加maven依赖

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

仅仅加入devtools在我们的eclipse中还不起作用,这时候还需要添加的spring-boot-maven-plugin

<build>
              <plugins>
                     <!--
                   用于将应用打成可直接运行的jar(该jar就是用于生产环境中的jar) 值得注意的是,如果没有引用spring-boot-starter-parent做parent,
                              且采用了上述的第二种方式,这里也要做出相应的改动
                   -->
               <plugin>
                   <groupId>org.springframework.boot</groupId>
                   <artifactId>spring-boot-maven-plugin</artifactId>
                   <configuration>
                            <!--fork:  如果没有该项配置,devtools不会起作用,即应用不会restart -->
                       <fork>true</fork>
                   </configuration>
               </plugin>
              </plugins>
</build>

运行App.java  ---- Run Application--- Java Application即可进行测试。

测试方法:

修改类-->保存:应用会重启

修改配置文件-->保存:应用会重启

修改页面-->保存:应用会重启,页面会刷新

不能使用分析:

对应的spring-boot版本是否正确,我这里使用的是1.5.0版本

是否加入plugin了,以及属性<fork>true</fork>

Eclipse Project 是否开启了Build Automatically

如果设置SpringApplication.setRegisterShutdownHook(false),则自动重启将不起作用。

默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,

但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。

如果想改变默认的设置,可以自己设置不重启的目录:spring.devtools.restart.exclude=static/**,public/**,

这样的话,就只有这两个目录下的文件修改不会导致restart操作了。

如果要在保留默认设置的基础上还要添加其他的排除目录:spring.devtools.restart.additional-exclude

如果想要使得当非classpath下的文件发生变化时应用得以重启,使用:spring.devtools.restart.additional-paths,这样devtools就会将该目录列入了监听范围。

关闭自动重启

设置 spring.devtools.restart.enabled 属性为false

原文地址:https://www.cnblogs.com/zengnansheng/p/10389802.html

时间: 2024-10-09 06:49:19

SpringBoot之devtools热部署的相关文章

springboot 配置devtools热部署(不用重启服务可以刷新页面)

一.加入devtools依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> 二.修改页面后,按快捷键ctrl+f9 即可 如果使用了thymeleaf 模板引擎,需要在app

SpringBoot项目设置热部署

记录一个SpringBoot 设置热部署(修改项目之后,项目自动重启)实例 POM.XML 文件 <!-- 配置springBoot项目的热部署启动 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional>

在SpringBoot中使用热部署(DevTools)

一.简介 有时候我们开发完SpringBoot项目后,启动运行.但是经常发现代码需要反复修改,然后修改部分内容后需要再启动....这样太费时了,热部署就是用来解决这一问题.让你修改完代码后,能自动执行编译并运行. 二.工具 IntelliJ IDEA.SpringBoot 2.0.4 三.步骤 1.创建正常SpringBoot的Maven项目 2.在需要热部署的项目中(或者在全局父Maven模块中)加入DevTools <dependencies> <!-- https://mvnrep

基于Maven的SpringBoot项目实现热部署的两种方式

下面我将介绍使用maven构建的SpringBoot项目中实现热部署的两种方式,使得部署变得异常简单,同时两种方式也非常的简单. 热部署 devtools Pom.xml中直接添加依赖即可: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>provided</

idea内springboot项目设置热部署

一.需求分析: 编写idea中编写项目时,经常性改某几行代码就需要重新启动项目,比较浪费时间,借助idea的热部署可以实现代码的热部署 二.实现经过 这边可以借助spring-boot-devtools模块进行配置,devtools会检测代码,并进行重新发布.devtools的实现原理是通过使用两个 ClassLoader,一个用来加载一些第三方的代码(如引入的一些jar包).另一个ClassCLoud会加载一些会更改的代码,可以称 为restart ClassLoader.在有代码进行更改的时

Eclipse搭建springboot项目(四)热部署

知识点:SpringBoot2.x使用Dev-tool工具热部署,快速加载启动应用 官方地址:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#using-boot-devtools 核心依赖包: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin

SpringBoot项目实现热部署

1.添加pom依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency><build><plugins><plugin><groupId>org

[springBoot系列]--springBoot的热部署

在SpringBoot中启用热部署是非常简单的一件事,因为SpringBoot为我们提供了一个非常方便的工具spring-boot-devtools 或者 springloaded,我们只需要把这个工具引入到工程里就OK了,下面我就说一下怎么引入spring-boot-devtools. 一.修改pom.xml 我们只需要在pom.xml里,引入相应的jar包就行了.  --optional=true,依赖不会传递,该项目依赖devtools:之后依赖myboot项目的项目如果想要使用devto

SpringBoot热部署的两种方式

SpringBoot热部署方式一共有两种,分别使用两种不同的依赖 SpringBoot 1.3后才拥有SpringBoot devtools热部署 ①:spring-boot-devtools   ②:Spring Loaded 方式一: 在项目的pom文件中添加依赖: 1 <!--热部署jar--> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId&g