Spring Boot热部署

简介: 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


image.png

选择Spring Initializr,然后next。 下一步里面自己修改想要的Name以及java版本,接着next

image.png

  • 剩下的操作其实很简单,需要什么依赖就勾选什么,这次我们需要热部署,所以DevTools需要选上,Lombok啥的看个人需要。然后web里面把Spring web选上,有些关于Spring Boot的starters的内容以后会涉及到,现在只需要知道有了它项目就可以自动关联相关依赖就行。 然后next,修改一下项目名直接Finish。这样一个新的Spring boot项目就算搭好了。
  • 修改IDEA中的一些配置 setting中在compile里设置


image.png


ctrl + shift + alt + / (Mac中command+shift+option+/),选择Registry,勾上 Compiler autoMake allow when app running

image.png]

  1. 启动应用,然后修改看看效果 在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 显示如下


image.png


现在把TestDevToolsController中改为 return "test DevTools 123"; 刷新浏览器,页面一闪就会返回修改后的内容

image.png

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

目录
相关文章
|
1月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
43 2
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
78 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
104 2
|
2月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
87 2
|
4月前
|
前端开发 Java 开发者
Spring Boot DevTools 热部署神器,助你在开发浪潮中乘风破浪,一骑绝尘!
【8月更文挑战第29天】在快速迭代的软件开发领域,高效开发至关重要。Spring Boot DevTools 作为一款优秀的热部署工具,可自动重新加载代码修改,无需手动重启应用,大幅节省时间,即时预览修改效果,简化开发流程。通过简单示例,展示了其自动刷新静态资源和模板文件的功能,有效提升了开发效率,使开发者更专注于功能实现。它就像是开发者的得力助手,显著减少等待时间,带来更高效、流畅的开发体验。
50 0
|
6月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
60 2
|
6月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
72 2
|
6月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
452 1
|
6月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
59 1
|
6月前
|
监控 Java Spring
Spring Boot中的热部署配置
Spring Boot中的热部署配置