Spring Boot热部署


最近想新写一个关于spring boot的专栏,内容其实已经积攒很久了,但是最近才有时间慢慢地更新。

第一篇文章,我不想只单纯讲Spring Boot的hello world,也不想类似于大多书籍开头讲一大堆关于spring的概念,甚至什么IOC、AOP。大多数小白最有成就感的事往往是看到localhost出现自己想要的,而不是花大功夫去了解一些基础概念。概念放到后面会循序渐进地引入,但是一开始还是讲讲上手的事。

什么是热部署

之前有稍微了解过Spring boot的人都知道,如果没有设置热部署,那么每次我们在源码中进行修改之后,必须要重启应用服务才能看到我们修改后的功能,这一过程是非常浪费时间的,这也就导致了开发低效。

再来解释热部署就好理解了,所谓的热部署:就是在应用正在运行的时候升级软件,却不需要重新启动应用。
简单来说就是启动服务后不论怎么修改源码,只需要在浏览器刷新一下就能出现修改后的界面。

不熟悉SpringBoot也没关系,就很类似于flask中设置debug=True,在效果上是一样的,避免了重启消耗的时间。

讲清楚了热部署的定义,再来看看如何在Spring Boot中实现热部署。

实现

在开发中进行热部署,最简单的方式就是添加spring-boot-devtools依赖。
当我们不使用模版引擎的时候(现在大多数是前后端分离,模版引擎应该使用的不会太多),只用把注意力放到后端程序的热部署。

  1. 新建一个热部署springboot项目,新建的时候添加好相应的依赖。
    file->new->project
    在这里插入图片描述选择Spring Initializr,然后next。
    下一步里面自己修改想要的Name以及java版本,接着next
    在这里插入图片描述
    剩下的操作其实很简单,需要什么依赖就勾选什么,这次我们需要热部署,所以DevTools需要选上,Lombok啥的看个人需要。然后web里面把Spring web选上,有些关于Spring Boot的starters的内容以后会涉及到,现在只需要知道有了它项目就可以自动关联相关依赖就行。
    然后next,修改一下项目名直接Finish。这样一个新的Spring boot项目就算搭好了。

  2. 修改IDEA中的一些配置
    setting中在compile里设置
    在这里插入图片描述
    ctrl + shift + alt + / (Mac中command+shift+option+/),选择Registry,勾上 Compiler autoMake allow when app running
    在这里插入图片描述

  3. 启动应用,然后修改看看效果
    在src/main/java/com.example.demo下新建Controller文件夹,关于MVC也是后面的内容,现在只需要这样做就行啦。
    然后在Controller中新建TestDevToolsController类,代码如下

package com.example.demo.Controller;

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


@RestController
public class TestDevToolsController {
    @RequestMapping("/testDevTools")
    public String testDevTools(){
        return "test DevTools 122";
    }
}

然后启动application

实现原理

spring-boot-devtools依赖最重要的功能就是自动实现将修改后的代码更新到最新的应用上,工作原理简单来说就是将未修改的类和存在修改的类分开加载,那么在有修改的时候就只需要重新加载那些被修改的类,而不是整个项目,这样就实现了项目较快的重启。

结果

打开localhost:8080/testDevTools
显示如下
在这里插入图片描述
现在把TestDevToolsController中改为
return "test DevTools 123";
刷新浏览器,页面一闪就会返回修改后的内容
在这里插入图片描述

这样就不仅仅学会了spring boot的hello world,同时还学会了添加依赖和热部署,小有成就之后再慢慢面对那些复杂的概念吧。

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shelgi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值