点击上方“后端技术精选”,选择“置顶公众号”

技术文章第一时间送达!

作者:mrbird

mrbird.cc/Spring-Boot-Devtools.html

平日里开发项目中,修改了Java代码或者配置文件的时候,必须手动重启项目才能生效。所谓的热部署就是在你修改了后端代码后不需要手动重启,工具会帮你快速的自动重启是修改生效。其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。

本文将介绍如何通过使用Spring-Boot-devtools来实现Spring Boot项目的热部署。IDE使用的是Eclipse Oxygen,并且使用Maven构建。

引入Devtools

搭建一个简单的Spring Boot项目,然后引入Spring-Boot-devtools:

1<dependency>2    <groupId>org.springframework.bootgroupId>3    <artifactId>spring-boot-devtoolsartifactId>4    <optional>trueoptional>5dependency>

devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),因为其采用的虚拟机机制,该项重启是很快的。

在Eclipse中生效还需要修改spring-boot-maven-plugin插件:

 1<build> 2    <plugins> 3        <plugin> 4            <groupId>org.springframework.bootgroupId> 5            <artifactId>spring-boot-maven-pluginartifactId> 6            <configuration> 7                <fork>truefork> 8            configuration> 9        plugin>10    plugins>11build>

并且开启Build Automatically:


测试热部署

在入口类中添加一个方法,用于热部署测试:

 1import org.springframework.boot.SpringApplication; 2import org.springframework.boot.autoconfigure.SpringBootApplication; 3import org.springframework.web.bind.annotation.RequestMapping; 4import org.springframework.web.bind.annotation.RestController; 5 6@RestController 7@SpringBootApplication 8public class DemoApplication { 9    @RequestMapping("/")10    String index() {11        return "hello spring boot";12    }13    public static void main(String[] args) {14        SpringApplication.run(DemoApplication.class, args);15    }16}

启动项目访问http://localhost:8080/,页面输出hello spring boot。

将方法的返回值修改为hello world并在保存的瞬间,应用便重启好了,刷新页面,内容也将得到更改。

所有配置

下面是所有Devtools在Spring Boot中的可选配置:

 1# Whether to enable a livereload.com-compatible server. 2spring.devtools.livereload.enabled=true  3 4# Server port. 5spring.devtools.livereload.port=35729  6 7# Additional patterns that should be excluded from triggering a full restart. 8spring.devtools.restart.additional-exclude=  910# Additional paths to watch for changes.11spring.devtools.restart.additional-paths= 1213# Whether to enable automatic restart.14spring.devtools.restart.enabled=true1516# Patterns that should be excluded from triggering a full restart.17spring.devtools.restart.exclude=META-INF/maven/**,META-INF/resources/**,resources/**,static/**,public/**,templates/**,**/*Test.class,**/*Tests.class,git.properties,META-INF/build-info.properties1819# Whether to log the condition evaluation delta upon restart.20spring.devtools.restart.log-condition-evaluation-delta=true 2122# Amount of time to wait between polling for classpath changes.23spring.devtools.restart.poll-interval=1s 2425# Amount of quiet time required without any classpath changes before a restart is triggered.26spring.devtools.restart.quiet-period=400ms 2728# Name of a specific file that, when changed, triggers the restart check. If not specified, any classpath file change triggers the restart.29spring.devtools.restart.trigger-file=

源码链接:https://github.com/wuyouzhuguli/Spring-Boot-Demos/tree/master/24.Spring-Boot-Devtools

参考自:http://412887952-qq-com.iteye.com/blog/2300313

END

Java面试题专栏

【40期】说一下线程池内部工作原理【39期】Mybatis面试18问,你想知道的都在这里了!【38期】一份tcp、http面试指南,常考点都给你了【37期】请你详细说说类加载流程,类加载机制及自定义类加载器【36期】说说 如何停止一个正在运行的线程?【35期】谈谈你对Java线程之间通信方式的理解【34期】谈谈为什么要拆分数据库?有哪些方法?【33期】分别谈谈联合索引生效和失效的条件【32期】你知道Redis的字符串是怎么实现的吗?【31期】了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?应对措施是什么

欢迎长按下图关注公众号后端技术精选

eclipse热部署_Spring Boot Devtools热部署相关推荐

  1. idea 热部署_Spring Boot Idea中热部署(自动刷新)

    在Idea中开发Spring Boot项目,每当修改内容之后,都需要点一下重启来进行重新发布,比较繁琐.针对这个问题Spring Boot中提供了一个devtools的工具项目,可以帮助我们完成自动刷 ...

  2. ideadebug热更新_Spring Boot 在IDEA中debug时的hot deployment(热部署)

    因为Spring Boot的项目一般会打包成jar发布, 在开发阶段debug时, 不能像传统的web项目那样, 选择exploded resources进行debug, 也没有热更新按钮, 如果每次 ...

  3. springboot jar包部署_Spring Boot项目基于Jar部署和打包详解教程

    目标:将Spring Boot项目使用maven指令打成jar包并运行测试 分析: 需要添加打包组件将项目中的资源.配置.依赖包打到一个jar包中:可以使用maven的package: 部署:java ...

  4. 【SpringBoot】开启热部署(jsp 页面热部署、devtools 全局热部署)

    SpringBoot 热部署 jsp 页面热部署 springboot 中 devtools 热部署 SpringBoot 核心知识点整理! jsp 页面热部署 在 springboot 中默认对 j ...

  5. docker添加新的环境变量_Docker的安装及部署Spring Boot项目操作详解!

    本文使用Docker部署Spring Boot项目.部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven:接着搭建一个Spring Boot项目, ...

  6. springboot项目层次结构_Spring Boot 默认的指标数据从哪来的?

    点击上方☝SpringForAll社区 轻松关注!及时获取有趣有料的技术文章 了解有关 Spring Boot 默认指标及其来源的更多信息. 您是否注意到 Spring Boot 和 Micromet ...

  7. Eclipse Spring Boot实现热部署

    spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. devtool ...

  8. 学习Spring Boot:(五)使用 devtools热部署

    前言 spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去.原理是在发现代码有更改之后,重新启动应用,但是比速度比手动停止后 ...

  9. 极其简单的 使用IDEA 中 实现springboot 热部署 (spring boot devtools版)

    添加配置pom.xml配置 第一步:添加springboot的配置文件 首先我先贴出我的配置 添加依赖包 <!-- spring boot devtools 依赖包. --><dep ...

最新文章

  1. spark广播变量的原理_spark使用广播变量
  2. Avalon-MM 阿窝龙妹妹应用笔记
  3. Dapper用法小记
  4. vue引入vue-amap
  5. soap header身份认证 不带ns标签
  6. 华为鸿蒙ai字幕,EMUI11一个值得吹爆的功能?AI字幕,支持翻译英日韩
  7. Install Cloud foundry MTA plugin
  8. python 支持向量机预测结果相同_Python机器学习算法 — 支持向量机(SVM)
  9. android 使用c 代码实现,JNI开发实现helloworld,调用自己的C代码实现(1)
  10. Java 8 流API(Stream)介绍与示例
  11. Redis学习笔记——简介及配置
  12. nagios监控3306端口
  13. 设计模式 (二十二) 责任链模式
  14. 2018年高教社杯全国大学生数学建模竞赛A题解题思路
  15. 电信移动中兴B860AV2.1-1.1T-1.2系列晶晨S905L芯片-刷机固件包
  16. linux 临界区保护方法,操作系统-信号量临界区保护,
  17. python深浅拷贝应用_简述Python的深浅拷贝以及应用场景?
  18. js返回浏览器的顶部
  19. 数据仓库分层 (ODS、DWD、DWS)
  20. OneNET麒麟座应用开发之八:采集大气压力等环境参数

热门文章

  1. NAVICAT连接oracle数据库的时候出现ora-01033
  2. service 层注入不同的数据源_.NET 理论基础+实战控制台程序实现AutoFac注入
  3. disp直接将内容输出在Matlab命令窗口中
  4. 将自己写的经常复用的类封装成动态库的方法
  5. JavaScript世界的一等公民
  6. Delphi中JSon SuperObject 使用:数据集与JSON对象互转
  7. C++中的STRING数据 重载 = 和数组下标
  8. 有子对象的派生类的构造函数
  9. 调用函数,整数逆序输出
  10. Ctrl+shift+f不起作用的原因