SpringBoot2.0之七 实现页面和后台代码的热部署

  开发过程当中我可能常常会由于修改一点点代码就须要重启项目而烦恼,这样不只很繁琐,还会由于不断重启浪费大量的时间,没法提升工做效率。但是如今SpringBoot为咱们提供了很是简单的方式让咱们实现热部署。java

1、添加相关依赖git

<!-- 热部署依赖 start -->
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-devtools</artifactId>  
        <!-- <optional>true</optional> --><!-- 该属性网上不少文章说必须为true,经验证能够不用 -->  
        <scope>true</scope>  
    </dependency>  

    <!-- 热部署依赖 end -->

2、新增一个文件spring

import java.util.List;
import com.somta.springboot.pojo.User;

public interface UserDao {

    int addUser(User user);
    
    int deleteUserById(Long id);
    
    int updateUserById(User user);

    User queryUserById(Long id); 
    
    List<User> queryUserList();

}

启动项目,任意修改一段代码,保存代码,会发现系统自动重启了,如此简单就能够达到热部署了。springboot

3、静态资源实现热部署maven

后台java代码经过上面的配置已经轻松实现了热部署,下面咱们说说SpringBoot的静态资源的热部署,默认状况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启的。spring-boot

在yml文件中添加以下配置,分别指定须要重启的文件夹和不须要重启的文件夹(测试发现除了排除的文件夹,其余文件夹修改都会触发重启,spring.devtools.restart.enabled=true 该属性能够快速启用和禁止热部署)测试

spring:  
  devtools:
    restart:
      enabled: true
      #添加那个目录的文件须要restart
      additional-paths: src/main/java
      #排除那个目录的文件不须要restart
      exclude: static/**

4、热部署原理分析spa

1)SpringBoot内置了两个加载器,一个Base ClassLoader加载器,用于加载不会改变的第三方依赖的jar;另外一个Restart ClassLoader加载器,用于加载本身编写的类;rest

2)执行流程:当应用重启后,原先的Restart ClassLoader被丢掉、从新new一个Restart ClassLoader来加载这些修改过的东西,而Base ClassLoader却没有变化。这就是devtools重启速度快的缘由。code

Git代码地址:https://gitee.com/Somta/Sprin...
原文地址:http://somta.com.cn/blog/view...

本文由明天的地平线创做,如想了解更多更详细的内容,请关注一下公众号,公众号内将进行最新最实时的更新!

相关文章
相关标签/搜索