devtools 开发热部署|学习笔记

简介: 快速学习 devtools 开发热部署

开发者学堂课程【SpringBoot 快速掌握 - 高级应用:devtools 开发热部署】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/613/detail/9322


devtools 开发热部署

内容简介

一、热部署

二、对 Spring Boot Dev tools 实现热部署的操作演示


接下来要讲的是 Spring Boot 与开发热部署,开发热部署是开发中常见的一种小技巧。


一、热部署

比如在开发中要修改 Java 文件后想看到效果,但被迫需要重启应用才能看到效果,这导致大量时间花费,因此希望在不重启应用的情况下,程序可以自动部署(热部署)。

有以下四种情况,如何能实现热部署:

1、模板引擎

-在 Spring Boot 中开发情况下禁用模板引擎的 cache

-页面模板改变 ctrl+F9 可以重新编译当前页面并生效

2、Spring Loaded

Spring 官方提供的热部署程序,实现修改类文件的热部署

-下载 Spring Loaded (项目地址 https://github.com/spring-projects/spring-loaded)

-添加运行时参数:

-java agent :C:/springloaded-1.2.5.RELEASE(这个夹包).jar -no verify

注:此种方法使用起来比较麻烦。

3、J Rebel

-收费的一个热部署软件

-安装插件使用即可

注:可以在很多插件上进行安装,但是需要付费。

4、Spring Boot Dev tools (是一个开发工作集,也是官方推荐)

-引入依赖

<dependency>

<groupld>org.springframework.boot</groupld><artifactld>spring-boot-devtools</artifactld></dependency>

- IDEA 使用 ctrl+F9

-或做一些小调整

ln tellij IEDA 和 Eclipse 不同,Eclipse 设置了自动编译之后,修改类它会自动编译而IDEA 在非 RUN 或 DEBUG 情况下才会自动编译(前提是已经设置了 Auto-Compile)。

(1)、设置自动编译(settings-compiler-make project automatically).

(2)、ctrl+ shift +alt+/ (maintenance)

(3)、勾选 compiler .auto make .allow. when. app. running


二、对 Spring Boot Dev tools 实现热部署的操作演示

1、(1)先创建一个非常简单的工程,会有一个 controller

代码设置:

package com. at guigu .deploy .controller;

import org. spring frame work. Stereotype .Controller;

import org. spring frame work. web. bind. annotation. Get Mapping;

@Controller

public class Hello Controller {

@GetMapping("/")

public String he1lo(){return "hello";}

(2)在 controller 里,当xxx发送“-请求”时,便会来到 hello 页面

代码设置:

package com. at guigu. deploy. controller;

import org. spring frame work .stereo type. Controller;

import org. spring frame work. web. bind .annotation. Get Mapping;

@Controller

public class Hello Controller {

@GetMapping("/")

public String hello(){

return "he1lo";

}

}

(3)hello 页面的位置在 templates 下面

代码设置:

<IDOCTYPE htm1>

<htm1 lang="en">

<head>

<meta charset="UTF-8"/>

<title>Title</title>

</head>

<body>

<h1>Hell</h1>

</body>

</htm1>

(4)如果此时启动此应用并访问,输入 local host8080 直接访问并更新目录;

(5)执行结果:

Hello

2、(1)如果修改了 hello controller,并想掌握 hello 之后才能到 hello 页面,此时修改后的代码如下:

package com. at guigu. deploy. controller;

import org. spring frame work .stereo type .Controller;

import org. spring frame work .web .bind. annotation. Get Mapping;

@Controller

public class Hello Controller {

@GetMapping("/hello")

public String hello(){

return "he1lo";

}

(2)在不使用 Ctrl+F9 键的情况下,在 classes——controller——hello controller·class 的使用“/”的代码如下:

@Controller

public class He1loController {

public Hello Controller() {

}

@GetMapping({"/"})

public String hello(){ return "hello";}

(3)此时的代码如下:@GetMapping({"/hello"})

虽然代码中是“/hello”,刷新之后可以发现还是不起任何作用;因为在实时编译的class 文件,并不能应用在工程里面。

3、如何引用

(1)在 pom 文件中直接引用 Spring 官方文档中的代码,在 Spring 官方文档中搜索 Developer tools,复制以下代码:<dependency>

<group Id>org .spring frame work. boot</group Id>

<artifact Id>spring-boot-dev tools</ artifact Id>

<optional>true</optional>

</ dependency>

此代码可直接复制到 pom 文件中,重启此应用之后就拥有了热部署的能力。

(2)此时再重新访问以下代码:

package com .at guigu. deploy .controller;

import org. spring frame work. stereo type. Controller;

import org. spring frame work .web. bind. an notation. Get Mapping;

@Controller

public class Hello Controller {

@GetMapping(" /abc")

public String hello(){

return "hello" ;

}

}

在执行代码时,配合 Ctrl+F9 键使用,可以观察到 Live Reload ,热部署已经启动,

此时的执行结果:

Hello  

(3)推荐 xxx 在开发中,可以使用自动热部署功能,这样可以避免每次使用时需要重启应用,也包括页面修改,如以下示例:

<!DOCTYPE htm1>

<htm1 lang="en">

<head>

<meta charset="UTF-8"/>

<title>Title</title>

</head>

<body>

<h1>Hello Abc</h1>

</body>

</htm1>

如果直接刷新去执行代码,是不会执行出结果的,但此时配合 Ctrl+F9 键使用,再刷新;

执行结果如下:

Hello Abc

(4)前提是需要引用 Developer tools 当中的代码,之后便有这些功能,这是在idea里面的操作。如果有修改,只需要按住 Ctrl+F9 键就可以,相当于 build project这个快捷键就是 Ctrl+F9 键。

4、如果在 eclipse 里应该怎么用?

(1)xxx 也创建一个相同工程,在“hello controller-请求”

代码设置:

package com .at guigu .deploy. controller;

import org. spring frame work. stereo type. controller;

@Controller

public class Hello controller {

@GetMapping("/")

public String hello() {

return "hello";

}

(2)到 hello 页面

代码设置:

<! DOCTYPE htm1>

<htm1>

<head>

<meta charset="UTF-8"/>

<title>Insert title here< /title>

</head>

<body>

<h1>Hello</h1>

< / body>

</ html>

也同样引用 Developer tools,再启动此应用,都在8080端口启动。先正常访问当前项目“/”,这样是没问题的。

(3)如果有修改,比如把“/”改成”/abc“,接下来只需要按 Ctrl +s 保存,保存之后便会自动编译,接着自动重启便开始工作,此时刷新的代码执行结果是没问题的,页面也是如此。

相关文章
|
11月前
|
算法 调度 数据安全/隐私保护
Docker Swarm 中Manager(管理节点)
【10月更文挑战第9天】
254 2
Idea 项目结构不显示解决方案
Idea 项目结构不显示解决方案
974 0
Idea 项目结构不显示解决方案
|
SQL 关系型数据库 MySQL
MySQL Workbench的安装与配置
MySQL Workbench的安装与配置
|
SQL XML Java
【MyBatis】 MyBatis框架下的高效数据操作:深入理解增删查改(CRUD)
【MyBatis】 MyBatis框架下的高效数据操作:深入理解增删查改(CRUD)
153 1
|
SQL 分布式计算 NoSQL
快速实践: 通过 Flink CDC 一键整库同步 MongoDB 到 Paimon
Apache Paimon (incubating) 是一项流式数据湖存储技术,可以为用户提供高吞吐、低延迟的数据摄入、流式订阅以及实时查询能力。
77312 4
快速实践: 通过 Flink CDC 一键整库同步 MongoDB 到 Paimon
|
SQL 运维 Oracle
【大数据开发运维解决方案】Oracle通过sqoop同步数据到hive
将关系型数据库ORACLE的数据导入到HDFS中,可以通过Sqoop、OGG来实现,相比较ORACLE GOLDENGATE,Sqoop不仅不需要复杂的安装配置,而且传输效率很高,同时也能实现增量数据同步。 本文档将在以上两个文章的基础上操作,是对第二篇文章环境的一个简单使用测试,使用过程中出现的错误亦可以验证暴漏第二篇文章安装的问题出现的错误,至于sqoop增量同步到hive请看本人在这篇文章之后写的测试文档。
【大数据开发运维解决方案】Oracle通过sqoop同步数据到hive
MinHash原理与应用
MinHash首先它是一种基于 Jaccard Index 相似度的算法,也是一种LSH的降维的方法,应用于大数据集的相似度检索、推荐系统。下边按我的理解介绍下MinHash。 举例A,B 两个集合: A = {s1, s3, s6, s8, s9} B = {s3, s4, s7, s8,
4213 86
|
缓存 开发工具 git
统信UOS系统开发笔记(六):提取在线安装软件后,提取其安装包,部署目标机使用离线软件包方式安装软件
前面搭建了基础环境,在使用统信UOS系统的相关行业也是不能上网的,但是可以传递压缩包,为了很好的方便相关从业人员工作,特将此种方式流程分享出来。(与国产银河麒麟不同)   本篇文章的重点就是离线安装,包括了在线安装,提取离线安装包,离线安装并完成测试验证。
|
存储 自然语言处理 搜索推荐
【es】elasticsearch/es搜索服务器介绍
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
804 0
【es】elasticsearch/es搜索服务器介绍
|
SQL
SQL查询今天与昨天的记录,及本月记录、本周记录
数据操作中涉及到统计的部分主要借助数据库内置函数完成 SQL查询今天的记录: datediff(day,[Datetime],getdate())=0  把Datetime换为你的相应字段; SQL查询昨天的记录: datediff(day,[Datetime],getdate())=1  把Datetime换为你的相应字段,getdate()-Datetime即为时间差。
3143 0