当前位置: 首页 > news >正文

SpringBoot入门——应用devtools进行热部署

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

SpringBoot入门——应用devtools进行热部署 

1、devtools简介

        devtools是boot的一个热部署工具,当我们修改了类文件、属性文件、页面、配置文件等时,会重新启动程序。

        其原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方jar),另一个ClassLoader加载会更改的类,成为restart ClassLoader。

        这样在有代码更改时候,原来的restart ClassLoader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类比较少,所以实现了较快的重启时间(一般5秒内)。

2、使用方法

配置pom.xml添加依赖包

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional>
			<scope>true</scope>
		</dependency>
  • maven中的optional=true表示依赖不会传递。即此处引用的devtools不会传递到依赖myboot项目的项目中。
  • 仅仅加入devtools在我们的eclipse中还不起作用,这时候还需要对之前添加的spring-boot-maven-plugin做一些修改,如下:
   <build>
      <plugins>
	    <plugin>
	       <groupId>org.springframework.boot</groupId>
	       <artifactId>spring-boot-maven-plugin </artifactId>
	       <configuration>     
               <!-- 如果没有该项配置,devtools不会起作用 -->        
		   <fork>true</fork>
	       </configuration>
	    </plugin>
      </plugins>
   </build>

3、测试

为了方便测试,可以在SpringBoot项目中写个controller类

package com.springboot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
	
	@RequestMapping("/hello")
	public String hello(){
		return "hello world";
	}
}

1、启动springboot

2、通过浏览器输入controller地址,获得返回的字符串

显示效果:

3、不关闭程序的情况下,修改返回的字符串值,然后刷新浏览器

	@RequestMapping("/hello")
	public String hello(){
		return "hello friend";
	}

显示效果:

在没有关闭程序的情况下发现字符串已经改变,测试成功

4、最后

可以继续修改配置文件、增添改类来验证是否重新加载。

转载于:https://my.oschina.net/u/3523885/blog/1488563

相关文章:

  • 对Action方法的参数进行双向转化
  • MATLAB中帮助的几种使用方法
  • 伪静态技术说明
  • Java中Model1和Model2
  • config jre for openoffice3.0
  • 2017敏捷沙滩大会概述:学习、心理安全和持续交付的重要性
  • 简洁的一键SSH脚本
  • Page-Enter、Page-Exit的使用
  • 很认真的聊一聊程序员的自我修养(转)
  • ERP系统各种单据流水号的产生方案
  • WebSocket在spring messagemapping下获取httpsession
  • 图片的动画 ease.js
  • [翻译].net 2.0(c#)下简单的FTP应用程序(转)
  • Python Unicode 转换 字符串
  • java中关于、、|、||之间的区别和运算
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • IDEA 插件开发入门教程
  • JavaScript 基本功--面试宝典
  • JAVA并发编程--1.基础概念
  • mongodb--安装和初步使用教程
  • Odoo domain写法及运用
  • php的插入排序,通过双层for循环
  • Redis学习笔记 - pipline(流水线、管道)
  • Service Worker
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Webpack 4 学习01(基础配置)
  • 爱情 北京女病人
  • 翻译:Hystrix - How To Use
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 时间复杂度与空间复杂度分析
  • 温故知新之javascript面向对象
  • 想写好前端,先练好内功
  • raise 与 raise ... from 的区别
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​​​​​​​​​​​​​​Γ函数
  • ​用户画像从0到100的构建思路
  • # include “ “ 和 # include < >两者的区别
  • #if和#ifdef区别
  • #LLM入门|Prompt#3.3_存储_Memory
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (06)金属布线——为半导体注入生命的连接
  • (阿里云万网)-域名注册购买实名流程
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (八十八)VFL语言初步 - 实现布局
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (多级缓存)多级缓存
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四)模仿学习-完成后台管理页面查询
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)h264中avc和flv数据的解析
  • (转)Windows2003安全设置/维护
  • ***原理与防范