SpringBoot中热部署配置深入讲解原理

2023-01-20 10:18:02
目录
热部署springboot项目热部署实现原理在springboot中进行热部署操作步骤重启与重载自动启动热部署参与热部署监控的文件范围配置关闭热部署总结

热部署

 >    对于Java应用程序来说,热部署就是在运行时更新Java类文件。
    在以往,我们对java代码进行修改之后都需要重新启动应用,但是如果该项目进行了热部署,就可以在不重启项目的条件下,进行代码的更新。

springboot项目热部署实现原理

springboot有内置服务器tomcat,在spirngboot中tomcat和应程序是平级的所以不能寄希望于tomcat来监控程序的异动来实现更新

所以新建一个程序在spring中来监控应用程序,如果应用程序有异动那么就命令tomcat重新加载应用程序。

这样的好处就是,spring容器中的东西不用都重新加载一遍,只需要重新加载自己开发的那个部分。

在springboot中进行热部署操作步骤

导入开发者工具对应的坐标

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

在修改代码之后进行构建项目

重启与重载

​>

    base类加载器:用来加载jar包中的类,jar包中的类和配置文件由于不会发生变化,因此不管加载多少次,加载的内容不会发生变化restart类加载器:用来加载开发者自己开发的类、配置文件、页面等信息,这一类文件受开发者影响

    ​ 当springboot项目启动时,base类加载器执行,加载jar包中的信息后,restart类加载器执行,加载开发者制作的内容。当执行构建项目后,由于jar中的信息不会变化,因此base类加载器无需再次执行,所以仅仅运行restart类加载即可,也就是将开发者自己制作的内容重新加载就行了,这就完成了一次热部署的过程,也可以说热部署的过程实际上是重新加载restart类加载器中的信息。

    自动启动热部署

    在IDE中设置

    允许在程序运行时进行自动构建

    参与热部署监控的文件范围配置

    ​>

      /META-INF/maven/META-INF/resources/resources/static/public/templates

      ​ 以上目录中的文件如果发生变化,是不参与热部署的。如果想修改配置,可以通过application.yml文件进行设定哪些文件不参与热部署操作

      spring:
        devtools:
          restart:
            # 设置不参与热部署的文件或文件夹
            exclude: static/**,public/**,config/application.yml

      关闭热部署

      ​>

      spring:
        devtools:
          restart:
            enabled: false

      ​ 如果当心配置文件层级过多导致相符覆盖最终引起配置失效,可以提高配置的层级,在更高层级中配置关闭热部署。例如在启动容器前通过系统属性设置关闭热部署功能。

      @SpringBootApplication
      public class SSMPApplication {
          public static void main(String[] args) {
              System.setProperty("spring.devtools.restart.enabled","false");
              SpringApplication.run(SSMPApplication.class);
          }
      }
      

      总结

      通过配置可以关闭热部署功能降低线上程序的资源消耗

      到此这篇关于SpringBoot中热部署配置深入讲解原理的文章就介绍到这了,更多相关SpringBoot热部署配置内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!