spring-boot-devtools (springboot的热部署)

热部署是什么

大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的 Class 文件,这个文件里记录着和代码等对应的各种信息,然后 Class 文件将被虚拟机的 ClassLoader 加载。

而热部署正是利用了这个特点,它监听到如果有 Class 文件改动了,就会创建一个新的 ClaassLoader 进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前。

类加载机制

Java 中的类经过编译器可以把代码编译为存储字节码的 Class 文件,该 Class 文件存储了各种信息,最终要加载到虚拟机中运行使用。

类加载机制(摘自《深入理解 Java 虚拟机》)

虚拟机把描述类的数据从 Class 文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型。

Spring Boot 实现热部署

Spring Boot 实现热部署很简单,我们使用上一章创建的项目 Springboot 创建简单的 web 交互应用 来演示。

第一种方式 略

着重介绍在IDEA中实现spring boot 的热部署:

1.导入依赖包(最好在建项目时 勾选上core-devTools)

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
     <scope>runtime</scope>
  <!--  <optional>true</optional> 依赖包不传递,假如该包在父pom中,如果其他子项目需要使用热部署的依赖包,还必须需要导入  -->
     <optional>true</optional>
</dependency>

2.加入编译节点(在springboot中已经有了spring-boot-maven-plugin,所以直接加入configuration标签内的内容即可)

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>          <!-- 如果没有该配置,这个devtools不会起作用,即应用不会restart-->
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
 </build>

3. 修改配置,实现idea自动编译

3.1   Settings-complier- build project automatically --> 勾选

3.2、CTRL + SHIFT + A --> 在出现的对话框中输入 : registry --> 找到并勾选compiler.automake.allow.when.app.running 

4.  编写测试方法

  4.1   修改返回值

  4.2   增加方法,测试是否可以正确访问新的方法

  4.3   增加新的测试类,测试是否可以正确访问

5.  说明:  

  <optional>true</optional>   表示该依赖是否传递(true 表示可以传递)

  如  该依赖在父pom中,并且有该<optional>true</optional>设置,其子module会实现自动部署。----这个与该配置无关,改成false还是会自动部署,因为这个是父子程序的原因。

原文地址:https://www.cnblogs.com/zdj-/p/8342727.html

时间: 2024-08-24 20:02:56

spring-boot-devtools (springboot的热部署)的相关文章

spring boot(二)热部署

1.打开idea的设置界面 File | Settings > Build, Execution, Deployment > Compiler 2.勾选Buildproject antomatically   (only works while not running/ debugging) 选项 3,ctrl+shift+alt+/  选择registy 4.勾选  compiler.automake.allow.when.app.running 5.maven中依赖spring-boot-

使用IDEA 中 实现springboot 热部署 (spring boot devtools版)

第一步:添加springboot的配置文件 首先我先贴出我的配置 添加依赖包 <!-- spring boot devtools 依赖包. --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <

IDEA新建SpringBoot+MySQL+MyBatis+Lombok+Spring Boot DevTools项目

一,IDEA新建SpringBoot+MySQL+MyBatis+Lombok+Spring Boot DevTools项目 1,新建项目的选中项 2,新建后我们需要配置勾选这个自动编译 3,按住shift+alt+ctrl+/,然后选中registry 4,然后选中这个选项 5,然后在 pom.xml文件添加以下代码,开启热部署工具,不配置不生效 <build> <plugins> <plugin> <groupId>org.springframework

springBoot开启热部署

springBoot开启热部署 这里使用devtools工具开启热部署 〇.搭建springbboot基础环境 一.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>true<

SpringBoot工程+热部署进行远程调试

本文转载自:https://blog.csdn.net/qq_31868349/article/details/78553901 SpringBoot工程+热部署进行远程调试 本地端添加配置 在pom.xml文件添加配置: <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <config

34、springboot的热部署

热部署 在开发中我们修改一个Java文件后想看到效果不得不重启应用,这导致大量时间花费, 我们希望不重启应用的情况下,程序可以自动部署(热部署).有以下四种情况,如何能实现热部署. 1.模板引擎 在Spring Boot中开发情况下禁用模板引擎的cache 页面模板改变ctrl+F9 可以重新编译当前页面并生效 2.Spring LoadedSpring 官方提供的热部署程序,实现修改类文件的热部署 下载Spring Loaded( 项目地址https://github.com/spring-p

SpringBoot工程热部署

SpringBoot工程热部署 1.在pom文件中添加热部署依赖 <!-- 热部署配置 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> 2.修改配置 添加依赖后再启动项目我们发现并不起作用.出现这种情况,并不是热部署配置问题,其根本

springboot之热部署

springboot的热部署使用场景: 1.本地调试 2.线上发布 银行和金融交易类的网站,需要全年不间断的运行. 优点: 1.无论本地还是在线上,都适用. 2.无需重新启动. java热部署和热加载联系: 1.不重启服务器编译/部署项目 2,基于java的类加载器进行实现 热部署和热加载的区别: 部署方式: 1.热部署更加偏向于在服务器运行时重新部署项目. 2.热加载只是会重新加载改变的类或者说是编译的.class文件 实现原理: 1.热部署直接重新加载整个应用.(释放内存,重新启动这个应用,

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

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