怎么在SpringBoot中使用spring-boot-devtools实现热部署

今天就跟大家聊聊有关怎么在Spring Boot中使用spring-boot-devtools实现热部署,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

目前创新互联已为上1000+的企业提供了网站建设、域名、网页空间、成都网站托管、企业网站设计、礼县网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

热部署是什么

大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的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集成方式:


  
    
      org.springframework.boot
      spring-boot-maven-plugin
      
        
          org.springframework
          springloaded
          1.2.5.RELEASE
        
      
    
  

spring-boot-devtools

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

pom集成:



  org.springframework.boot
  spring-boot-devtools
  true 

集成注意

  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实现热部署有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


本文标题:怎么在SpringBoot中使用spring-boot-devtools实现热部署
网页URL:http://myzitong.com/article/jigpoj.html