博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot2.0之七 实现页面和后台代码的热部署
阅读量:6408 次
发布时间:2019-06-23

本文共 1349 字,大约阅读时间需要 4 分钟。

  开发过程中我可能经常会因为修改一点点代码就需要重启项目而烦恼,这样不仅很繁琐,还会因为不断重启浪费大量的时间,无法提高工作效率。可是现在SpringBoot为我们提供了非常简单的方式让我们实现热部署。

一、添加相关依赖

org.springframework.boot
spring-boot-devtools
true

二、新增一个文件

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
queryUserList();}

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

三、静态资源实现热部署

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

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

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

四、热部署原理分析

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

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

Git代码地址:

原文地址:

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

转载地址:http://quhea.baihongyu.com/

你可能感兴趣的文章
嵌入式 H264参数语法文档: SPS、PPS、IDR以及NALU编码规律
查看>>
初识Opserver,StackExchange的监控解决方案
查看>>
给大家讲解一下JavaScript与后台Java天衣无缝相结合
查看>>
探索HTML5之本地文件系统API - File System API
查看>>
javascript有用代码块(1)
查看>>
libevent 笔记
查看>>
PHP实现人人OAuth登录和API调用
查看>>
redis源码笔记 - initServer
查看>>
FindBugs工具常见问题
查看>>
ECSHOP报错误Deprecated: preg_replace(): The /e modifier is depr
查看>>
【iOS】iOS之Button segue弹出popOver消除(dismiss)问题
查看>>
java多线程系列5-死锁与线程间通信
查看>>
数据库分库分表
查看>>
腾讯Hermes设计概要——数据分析用的是列存储,词典文件前缀压缩,倒排文件递增id、变长压缩、依然是跳表-本质是lucene啊...
查看>>
小程序模板嵌套以及相关遍历数据绑定
查看>>
Systemd入门教程:命令篇(转)
查看>>
java随机范围内的日期
查看>>
linux包之diff
查看>>
spring事务学习(转账案例)(二)
查看>>
[官方教程] [ES4封装教程]1.使用 VMware Player 创建适合封装的虚拟机
查看>>