博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 系列教程5-热部署-devtools模块
阅读量:5026 次
发布时间:2019-06-12

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

devtools模块

devtools模块,是为开发者服务的一个模块。主要的功能就是代码修改后一般在5秒之内就会自动重新加载至服务器,相当于restart成功。

原理

简单原理

在发现代码有更改之后,自动重新启动应用,但是其速度比手动停止后再启动还要快些,更快这里指的不是节省出来的手工操作的时间

底层原理:双类加载器机制

  • 一个Base ClassLoader加载器,用于加载不会改变的第三方依赖的jar;
  • 另一个Restart ClassLoader加载器,用于加载自己编写的类;
  • 执行流程:当应用重启后,原先的Restart ClassLoader被丢掉、重新new一个Restart ClassLoader来加载这些修改过的东西,而Base ClassLoader却没有变化。这就是devtools重启速度快的原因。

注意事项

  • pom.xml里面plugin不配置fork=true实测也是可以的
  • application.properties需要配置:添加那个目录的文件需要restart
    spring.devtools.restart.additional-paths=src/main/java

项目图片

这里写图片描述

pom.xml

4.0.0
com.jege.spring.boot
spring-boot-devtools
war
0.0.1-SNAPSHOT
spring-boot-mybatis
http://maven.apache.org
org.springframework.boot
spring-boot-starter-parent
1.4.1.RELEASE
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
true
spring-boot-devtools
org.springframework.boot
spring-boot-maven-plugin
org.apache.maven.plugins
maven-compiler-plugin
${java.version}
${java.version}

Application.java

package com.jege.spring.boot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/** * @author JE哥 * @email 1272434821@qq.com * @description:spring boot 启动类 */@SpringBootApplicationpublic class Application {
public static void main(String[] args) { SpringApplication.run(Application.class, args); }}

需要application.properties

#添加那个目录的文件需要restartspring.devtools.restart.additional-paths=src/main/java#排除那个目录的文件不需要restartspring.devtools.restart.exclude=static/**,public/**

HelloController

package com.jege.spring.boot.devtools;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @author JE哥 * @email 1272434821@qq.com * @description:看看devtools模块的快速 */@RestControllerpublic class HelloController {
@RequestMapping("/hello") public String hello() {// System.out.println("test"); return "Hello World"; }}

运行

  • 运行Application之后,修改HelloController,可以看到快速重启,加载即时生效

扩展

  • 如果觉得不过瘾,还可以去试试使用Spring Loaded或JRebel项目

源码地址

如果觉得我的文章对您有帮助,请予以打赏。您的支持将鼓励我继续创作!谢谢!

微信打赏
支付宝打赏

转载于:https://www.cnblogs.com/je-ge/p/6105492.html

你可能感兴趣的文章
oracle连接的三个配置文件(转)
查看>>
Vim配置文件(Vimrc)
查看>>
RecyclerView 局部刷新(获取viewHolder 去刷新)
查看>>
PHP表单(get,post)提交方式
查看>>
使用vbs或者bat脚本修改IE浏览器安全级别和选项
查看>>
Silverlight入门
查看>>
Silverlight动态调用WEBSERVICE,WCF方法
查看>>
LeetCode 895. Maximum Frequency Stack
查看>>
模仿segmentfault 评论
查看>>
一个简单的日志函数C++
查看>>
Java 8 中如何优雅的处理集合
查看>>
IOS程序的启动过程
查看>>
连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB
查看>>
Java操作Excel和Word
查看>>
Oracle 体系结构之ORACLE物理结构
查看>>
ORA-12538: TNS: no such protocol adapter
查看>>
盒子模型
查看>>
局域网协议
查看>>
[HNOI2012]永无乡 线段树合并
查看>>
Spring整合hibernate:3、使用XML进行声明式的事务管理
查看>>