Spring Boot集成spring-boot-devtools开发时实现热部署的方式

 更新时间:2018年05月14日 09:02:50   作者:Sam的个人主页  
这篇文章主要介绍了Spring Boot集成spring-boot-devtools开发时实现热部署的方式,文中还给大家提到了spring boot 实现热部署的方式及集成注意事项,感兴趣的朋友跟随脚本之家小编一起学习吧

热部署是什么

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

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

类加载机制

Java中的类经过编译器可以把代码编译为存储字节码的Class文件,该Class文件存储了各种信息,最终要加载到虚拟机中运行使用。类加载机制(摘自《深入理解 Java 虚拟机》)虚拟机把描述类的数据从Class文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。

Spring Boot实现热部署

Spring Boot实现热部署有如下方式:

  1. 使用 Spring Loaded
  2. 使用 spring-boot-devtools

Spring Loaded

这种方式是以Maven插件的形式去加载,所以启动时使用通过Maven命令mvn spring-boot:run启动,而通过Application.run方式启动的会无效,因为通过应用程序启动时,已经绕开了Maven插件机制。

pom集成方式:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>springloaded</artifactId>
          <version>1.2.5.RELEASE</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>

spring-boot-devtools

这种方式无论怎么启动应用,都可以达到修改文件后重启应用。

pom集成:

<!-- 热部署模块 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
</dependency>

集成注意

  1. 如果发现没有热部署效果,则需要检查IDE配置中有没有打开自动编译。
  2. 如果使用Thymeleaf模板引擎,需要把模板默认缓存设置为false
#禁止thymeleaf缓存(建议:开发环境设置为false,生成环境设置为true)
spring.thymeleaf.cache=false

1.针对devtools的可以指定目录或者排除目录来进行热部署

#添加那个目录的文件需要restart
spring.devtools.restart.additional-paths=src/main/java
#排除那个目录的文件不需要restart
spring.devtools.restart.exclude=static/**,public/**

设置idea让他实现文件修改自动重启项目

1.找到idea的Preferences -> Build, Execution, Deployment -> Compiler,勾选Build project automatically

2.回到idea正常界面,Mac使用快捷键shift+option+command+/,window上的快捷键是Shift+Ctrl+Alt+/,打开Registry,勾选

compiler.automake.allow.when.app.runningcompiler.automake.allow.when.app.running
通过以上的设置就可以在不重启服务的情况下加载html,但如果修改java文件,服务在几秒后会自动重启,如果不希望服务重启需要在application.properties或application.yml中添加spring.devtools.reatart.enable=false

总结

以上所述是小编给大家介绍的Spring Boot集成spring-boot-devtools开发时实现热部署,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Java中的Lock与ReentrantLock深入解析

    Java中的Lock与ReentrantLock深入解析

    这篇文章主要介绍了Java中的Lock与ReentrantLock深入解析,Lock位于java.util.concurrent.locks包下,是一种线程同步机制,就像synchronized块一样,但是,Lock比synchronized块更灵活、更复杂,需要的朋友可以参考下
    2024-01-01
  • Java使用Collections工具类对List集合进行排序

    Java使用Collections工具类对List集合进行排序

    这篇文章主要介绍了Java使用Collections工具类对List集合进行排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java核心库实现AOP过程

    Java核心库实现AOP过程

    给大家分享一下利用Java核心库实现简单的AOP的经验分享和教学,需要的读者们参考下吧。
    2017-12-12
  • 集合嵌套之ArrayList嵌套ArrayList实例

    集合嵌套之ArrayList嵌套ArrayList实例

    下面小编就为大家带来一篇集合嵌套之ArrayList嵌套ArrayList实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • springboot如何设置请求参数长度和文件大小限制

    springboot如何设置请求参数长度和文件大小限制

    这篇文章主要介绍了springboot如何设置请求参数长度和文件大小限制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Jedis零基础入门及操作Redis中的数据结构详解

    Jedis零基础入门及操作Redis中的数据结构详解

    Jedis 的 API 方法跟 Redis 的命令基本上完全一致,熟悉 Redis 的操作命令,自然就很容易使用 Jedis,因此官方也推荐 Java 使用 Jedis 来连接和操作 Redis
    2022-09-09
  • springboot+mybatis-plus+oracle实现逻辑删除

    springboot+mybatis-plus+oracle实现逻辑删除

    最近在做一个前后端分离的小项目,需要删除用户表的用户,本文主要实现了springboot+mybatis-plus+oracle逻辑删除,具有一定的参考价值,感兴趣的可以了解一下
    2021-08-08
  • Java实现CORS跨域请求的实现方法

    Java实现CORS跨域请求的实现方法

    本篇文章主要介绍了Java实现CORS跨域请求的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • spring session同域下单点登录实现解析

    spring session同域下单点登录实现解析

    这篇文章主要介绍了spring session同域下单点登录实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • java批量下载将多个文件(minio中存储)压缩成一个zip包代码示例

    java批量下载将多个文件(minio中存储)压缩成一个zip包代码示例

    在Java应用程序中有时我们需要从多个URL地址下载文件,并将这些文件打包成一个Zip文件进行批量处理或传输,这篇文章主要给大家介绍了关于java批量下载将多个文件(minio中存储)压缩成一个zip包的相关资料,需要的朋友可以参考下
    2023-11-11

最新评论