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快捷键。不知我这样说,你明白了没有?

相关推荐
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页