zoukankan      html  css  js  c++  java
  • 在IDEA上对SpringBoot项目配置Devtools实现热部署

    spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。


    devtools实现原理:

    • 采用双类加载机制
      - base ClassLoader : 加载第三方jar包(很少修改)
      - restart ClassLoader :加载自己创建的类文件
      应用重启时只需要重新new一个restart ClassLoader即可,加载jar包的base ClassLoader无需加载,所以devtools重启速度很快,提升效率

    在pom文件中添加devtools依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <!-- optional=true,依赖不会往下传递,
        如果有项目依赖本项目,并且想要使用devtools,需要重新引入 -->
        <optional>true</optional>
        <scope>runtime</scope>
    </dependency>
    

    idea自动编译设置

    • File -> Settings -> Build,Execution,Deplyment -> Compiler,选中打勾 “Build project automatically”
    • Shift+Ctrl+Alt+/ => 选择Registry => 找到“compiler.automake.allow.when.app.running”并选中

    tips : 我设置自动编译后,devtools在我修改完文件后反应有点迟缓,经常要在修改过后等个几秒钟才开始自动编译,暂时没找到具体原因,有知道的小伙伴可以在评论区告诉我一下,如果你在设置完后也有这种情况,可以进行手动编译,修改完内容后按 Ctrl+Shift+F9编译文件

    说明

    • 页面热部署

    在application.properties文件中配置spring.thymeleaf.cache=false(页面修改后会立即生效)

    • 不会重新启动的资源

    /META-INF/maven, /META-INF/resources ,/resources ,/static ,/public 或者 /templates 不会触发重新启动, 但会触发实时重新加载。

    • 关闭devtools

    在Application中的 SpringApplication.run()方法之前添加System.setProperty("spring.devtools.restart.enabled", "false")

  • 相关阅读:
    排序总结[3]_线性排序算法
    Spring九问
    DP-最大递增子序列与最大递增子数组; 最大公共子序列与最大公共子数组。
    java 8 新特性
    数据库事务隔离等级
    算法思维方式之二——DP与DFS
    算法思维方式—— 由排列组合想到的
    java Servlet简介
    java hashCode, 引用以及equals().
    java反射简介
  • 原文地址:https://www.cnblogs.com/wuyiz/p/11718618.html
Copyright © 2011-2022 走看看