Spring Boot 2从入门到入坟 | 最佳实践篇:devtools开发者工具的简单使用
发布日期:2021-06-30 17:57:28 浏览次数:3 分类:技术文章

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

在这一篇文章中,我为大家介绍一个我们以后在开发中经常使用到的东东,即devtools

我们不妨先进到Spring Boot的官方文档中去瞧一瞧吧!来到Spring Boot官方文档的索引页面,然后找到Using Spring Boot这一章节,进入这一章节之后,你会在左侧列表中看到Developer Tools,这一小节说的就是我们这个开发者工具。

在这里插入图片描述

看到上面的maven依赖没有,在咱们自个的maven项目中引入进来就行,如下所示。

org.springframework.boot
spring-boot-devtools
true

devtools开发者工具的作用就是我们通常所说的热更新。我们以后在做Web开发时肯定是会经常反复修改代码的,或者是修改静态页面中的内容,一旦改完以后,我们希望是不要每次都来点击重启按钮把项目重新启动起来,然后才能看到效果。

在这样的背景下,咱们的devtools开发者工具就应运而生了。只要有了devtools这个开发者工具,以后我们在项目里面无论是修改了源代码,还是修改了静态页面中的内容,或者还是其他的一些什么行为,我们只需要按下Ctrl + F9快捷键,我们的项目就能实时生效了。

如果大家要是不信的话,那么我不妨在这儿举个例子给大伙看看。首先,将咱们的项目启动起来,启动成功之后,修改一下HelloController类中的代码,即将要处理的请求由/hello改为/hello2,如下所示。

package com.meimeixia.boot.controller;import com.meimeixia.boot.bean.Car;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;/** * @author liayun * @create 2021-04-19 4:24 */@Slf4j@RestControllerpublic class HelloController {
@Autowired Car car; // car实例里面每一个属性的值都是跟配置文件进行绑定的 @RequestMapping("/car") public Car car() {
return car; } @RequestMapping("/hello2") public String handle01(@RequestParam("name") String name) {
// 在HelloController类上标注了@Slf4j注解之后,该注解会自动给HelloController这个类里面注入log这样一个属性(组件),也即日志记录器 log.info("请求进来了......"); return "Hello, Spring Boot 2!" + "你好:" + name; }}

修改源代码之后,我们只需要按下Ctrl + F9快捷键即可,而不再需要重启咱们的项目了。

说到这里,有人知道Ctrl + F9快捷键的作用吗?不知道也没关系,我告诉大家就行。Ctrl + F9快捷键的作用就是让咱们的项目重新编译一遍,这从下图中就能清晰地看出来。

在这里插入图片描述

项目重新编译以后,devtools这个开发者工具就会来重新加载我们的项目。这时,我们不妨在浏览器中访问一下hello请求,结果发现报了一个404的错误,这是因为我们后端处理的请求已经由/hello改为/hello2了。

在这里插入图片描述

那我们再在浏览器中访问一下hello2请求,发现响应正常,如下图所示。

在这里插入图片描述

看到没有,我没骗大家吧!修改了项目中的源代码之后,我们是不是不用再像以前一样去手动重启咱们的项目了啊!

也就是说,我们项目中所有东东修改了之后,只需要按下Ctrl + F9快捷键就行,包括我们以后开发页面,大家要知道以后我们的页面都是放在src > main > resources目录下的,页面修改之后,也是只须按下Ctrl + F9快捷键即可。

其实,对于热更新而言,除了静态文件修改之外,其他东东的修改,你只要按下Ctrl + F9快捷键都是能看到效果的,就拿修改类的源代码来说,它就相当于是来帮我们重启项目。如果我们从头到尾就没有修改任何东西,那么按下Ctrl + F9快捷键你是看不到任何效果的。只有当我们修改了源代码或者页面中的内容时,按下Ctrl + F9快捷键你才会看到效果,效果就是帮我们来重启项目,大家试试就知道了。

大家可能就会说了,这不跟我们点击如下重启按钮所达成的效果是一样的吗?确实是这样。

在这里插入图片描述

如果大家想要用纯正的热更新技术,那么又该怎么办呢?人家Spring Boot官方文档也说了,在咱的应用中使用上devtools开发者工具之后,其实这就相当于只是来Automatic Restart,即自动重启(应用)。如果我们想要用到真正的热更新功能,人家Spring Boot官方文档同样也说了,说它推荐大家就别用devtools开发者工具了,不用它那用啥呢?

Automatic Restart这一节内容下,大家就能找到答案,而且我也圈出来了,就是去用付费的JRebel插件,所以,大家还得在IDEA里面安装JRebel这个插件哟😊

在这里插入图片描述

这样,当我们改动了某些类的源代码后,JRebel插件便能来动态地给我们替换这些类的变化了,带来的结果就是我们可以不以重启的方式来启动项目了。相信大家以后一定会用到JRebel插件,因为它是一个特别实用的插件,即使它是付费的。

最后,我来总结一下吧!以后只要在咱的应用中使用了devtools开发者工具,除了静态页面的修改之外,其他东东的修改,例如类的源代码,修改完了之后只须按下Ctrl + F9快捷键即可,该快捷键的作用就是将项目重新编译一遍,这时你便会在IDEA控制台中看到项目重启的整个过程了。当然了,你点击重启按钮或者按下Alt + R快捷键来重启项目效果也是一样的。

不过,我们还是推荐使用Ctrl + F9快捷键,因为如果我们开发的是静态页面,只是把静态页面的内容修改了一下,那么按下Ctrl + F9快捷键,我们压根就不会在IDEA控制台中看到项目重启的整个过程。也就是说,如果我们只是修改了一下静态页面的内容,那么我们整个项目压根就不用重启,这不是挺方便的吗?你说是不是啊!

其实,如果我们耐心点翻阅Spring Boot官方文档的话,那么你就会发现devtools开发者工具还有其他的好多功能,例如全球化的开发者配置(即Global Settings)等等这些功能,虽说有这些功能,但是这些功能我们后来基本上都用不到,所以,在这里我就不再赘述了。

也就是说,我们一般只是使用devtools开发者工具来实现一个自动重启功能,因为严格意义上来讲,该功能并不叫热更新,而只是一个自动重启,就是来帮我们监测我们整个项目的某个文件是否有了变化,若监测到了变化,则便会帮我们来重启项目,当然了,前提是得按下Ctrl + F9快捷键。不知我这样说,你明白了没有?

转载地址:https://liayun.blog.csdn.net/article/details/116541775 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Spring Boot 2从入门到入坟 | 最佳实践篇:Spring Initailizr的使用
下一篇:Spring Boot 2从入门到入坟 | 最佳实践篇:使用Lombok插件来简化JavaBean的开发

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年05月01日 04时53分52秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

神经网络调参实战(四)—— 加深网络层次 & 批归一化 batch normalization 2019-04-30
数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(1)—— 假设检验(μ&卡方检验&方差检验(F检验))&相关系数(皮尔逊&斯皮尔曼) 2019-04-30
RRT算法(快速拓展随机树)的Python实现 2019-04-30
路径规划(二) —— 轨迹优化(样条法) & 局部规划(人工势能场法) & 智能路径规划(生物启发(蚁群&RVO) & 强化学习) 2019-04-30
D*算法 2019-04-30
强化学习(四) —— Actor-Critic演员评论家 & code 2019-04-30
RESTful API 2019-04-30
优化算法(四)——粒子群优化算法(PSO) 2019-04-30
数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(2)——回归分析(最小二乘法&决定系数&残差不相关)&主成分分析&奇异值分解 2019-04-30
数据在Oracle中的存储 2019-04-30
优化算法(五)—人工蜂群算法Artificial Bee Colony Algorithm(ABC) 2019-04-30
轨迹规划 trajectory planning 2019-04-30
AGV自动导引运输车 2019-04-30
Trie树(字典树) 2019-04-30
COMP7404 Machine Learing——Logistic Regression 2019-04-30
COMP7404 Machine Learing——Regularization(参数C) 2019-04-30
COMP7404 Machine Learing——KNN 2019-04-30
COMP7404 Machine Learing——SVM 2019-04-30
COMP7404 Machine Learing——Decision Tree & Random Forests 2019-04-30
COMP7404 Machine Learing——Hyperparameter Grid Search & Nested Cross-Validation 2019-04-30