SpringBoot启动热部署

SpringBoot配置devtools启动热部署

devtools的原理 

  spring boot使用了两个类加载器(classloader),对于不会变化的类,比如引入的第三方jar包中的类,加载到一个base classloader中,而开发者实际编写的类,被加载到另一个restart classloader中。当应用重启的时候,整个restart classloader被销毁后重建,而base classloader则保留下来不必再次加载。通过这种方式实现restart效率的提升

实现

  1.pom.xml添加devtools的依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <!-- optional=true, 依赖不会传递, 该项目依赖devtools;
      之后依赖boot项目的项目如果想要使用devtools, 需要重新引入 -->
    <optional>true</optional>
</dependency>

  2..修改application.properties文件

#"关闭缓存, 即时刷新"
#spring.freemarker.cache=false
#spring.thymeleaf.cache=true  如果开启此处会导致每次输入删除都会自动刷新哪怕你没保存
#热部署生效
spring.devtools.restart.enabled=true
#设置重启的目录,添加那个目录的文件需要restart
spring.devtools.restart.additional-paths=src/main/java
spring.devtools.restart.exclude=WEB-INF/**

  3.idea配置

  3.1.当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译

    File-Settings-Compiler-Build Project automatically

  3.2.ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running

  3.3测试

  修改类,应用会自动重启

猜你喜欢

转载自www.cnblogs.com/xpx951201/p/10246527.html