Spring Boot 2从入门到入坟 | 最佳实践篇:devtools开发者工具的简单使用
Posted 李阿昀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 2从入门到入坟 | 最佳实践篇:devtools开发者工具的简单使用相关的知识,希望对你有一定的参考价值。
在这一篇文章中,我为大家介绍一个我们以后在开发中经常使用到的东东,即devtools
。
我们不妨先进到Spring Boot的官方文档中去瞧一瞧吧!来到Spring Boot官方文档的索引页面,然后找到Using Spring Boot
这一章节,进入这一章节之后,你会在左侧列表中看到Developer Tools
,这一小节说的就是我们这个开发者工具。
看到上面的maven依赖没有,在咱们自个的maven项目中引入进来就行,如下所示。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
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
@RestController
public 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
快捷键。不知我这样说,你明白了没有?
以上是关于Spring Boot 2从入门到入坟 | 最佳实践篇:devtools开发者工具的简单使用的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2从入门到入坟 | 最佳实践篇:devtools开发者工具的简单使用
Spring Boot 2从入门到入坟 | 最佳实践篇:使用Lombok插件来简化JavaBean的开发
Spring Boot 2从入门到入坟 | 基础入门篇:「Spring Boot 2从入门到入坟」系列教程介绍
Spring Boot 2从入门到入坟 | 基础入门篇:「Spring Boot 2从入门到入坟」系列教程介绍