SpringBoot依赖之Spring Boot DevTools热部署开发增效工具

news2024/9/20 14:22:00

摘要:Spring项目又大又重,依赖多,编译启动慢,怎么提高研发效率呢?方法之一==热部署==!

概念

Spring Boot DevTools
  • 依赖名称: Spring Boot DevTools
  • 功能描述: Provides fast application restarts, LiveReload, and configurations for enhanced development experience.
  • 中文释义:提供快速应用程序重启、LiveReload 和配置,以增强开发体验。

要在 IntelliJ IDEA 中创建一个 Spring Boot 项目,并集成 Spring Boot DevTools 实现热部署,您可以按照以下步骤操作。Spring Boot DevTools 可以在开发时自动重新加载应用程序,从而提高开发效率。

1. 创建 Spring Boot 项目

  1. 打开 IntelliJ IDEA

  2. 新建项目并添加添加 Spring Boot DevTools 依赖

  3. 打开 pom.xml 文件。

  4. <dependencies> 部分,添加以下依赖:

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
    

    或者,如果您使用的是 Gradle,请在 build.gradle 文件中添加:

    dependencies {
        developmentOnly 'org.springframework.boot:spring-boot-devtools'
    }
    
  5. 刷新 Maven/Gradle 项目以确保依赖下载并生效。

2. 配置 IntelliJ IDEA 支持热部署

  1. 启用自动编译

    • 打开 File -> Settings -> Build, Execution, Deployment -> Compiler -> Build project automatically
    • 确保勾选 Build project automatically
      在这里插入图片描述
  2. 启用热部署

    • 在 Mac 上按下Command + Shift + A 或者按两下shift键,windows上 Ctrl + Shift + A,弹窗出来来后,搜索 Registry关键词。

在这里插入图片描述

  • 搜索并勾选启用 compiler.automake.allow.when.app.running

在这里插入图片描述

3. 编写简单的 Spring Boot 应用

文中涉及的学习代码地址

  1. 创建一个简单的 Controller 类来测试热部署:

    package com.dependencies.springbootdevtools;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author zhizhou   2024/8/29 12:40
     */
    @RestController
    public class HelloController {
        
        @GetMapping("/hello")
        public String hello() {
            return "Hello, I'm ok !";
        }
        
    }
    
  2. 创建主类 SpringBootDevtoolsApplication:

    package com.dependencies.springbootdevtools;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class SpringBootDevtoolsApplication {
        
        public static void main(String[] args) {
            SpringApplication.run(SpringBootDevtoolsApplication.class, args);
        }
        
    }
    
    

4. 运行和测试热部署

  1. 运行SpringBootDevtoolsApplication入口类
  2. 在浏览器中访问 http://localhost:8080/hello,您应该会看到 “Hello, I’m ok !”。
  3. 测试热部署:不需要停止运行的应用程序,直接在 HelloController 中修改返回的字符串为 “Hello, World!”。
  4. 保存文件,然后刷新浏览器,您应该会看到更新后的内容。

5. 总结

通过集成 Spring Boot DevTools,我们可以在开发时自动重新加载应用程序,而无需手动重启。这样可以极大地提高开发效率,尤其是在需要频繁修改代码并查看效果时。

文中涉及的学习代码地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提高 Web 应用程序安全性的标准

开放式 Web 应用程序安全项目 (OWASP) 是一个国际非营利组织&#xff0c;致力于为任何有兴趣提高 Web 应用程序安全性的人提供免费文档、工具、视频和论坛。 OWASP 最初成立为开放式 Web 应用程序安全项目&#xff0c;并于 2004 年注册为非营利性慈善机构&#xff0c;提供有关…

杰发科技AC7840——EEP的EEP_HAL_OTHER_ERROR错误

0. 初始化EEP时候发现返回5 在EEP使用手册里面有写答案 2. 根据文档看看EEP初始化的参数 2. 从代码看看EEP初始化流程 对EepSize进行校验&#xff0c;有异常直接退出 最小编程字节数&#xff0c;用的挺多的 重复次数赋值&#xff0c;看起来每个都要尝试3次 EEP的地址赋值 解锁…

嵌入式Linux应用程序开发-2 Linux基础命令

Linux常用命令 Shell是一种Linux中的命令行解释程序&#xff0c;就如同Command.com是DOS下的命令解释程序一样&#xff0c;为用户提供使用操作系统的接口。用户在提示符下输入的命令都由Shell先解释然后传给Linux内核。 Shell是命令语言、命令解释程序集程序设计语言的统称。…

macos USB外接键盘ctrl键绑定方法 解决外接USB键盘与mac键盘不一致问题

mac电脑外接USB键盘后我们需要修改一下 ctrl键的绑定后才符合我们的使用习惯,因为标准USB键盘和mac键盘上面的ctrl键是不一样的, mac上面的 command 键 对应我们USB键盘上面的 ctrl 键. 修改方法: 偏好设置 --> 键盘 点击修饰键 后 选择键盘里面选择 USB键盘 ,然后调换…

C++领进门(第三讲)

目录 7.内联函数 7.1 概念 7.2 特征 8. auto关键字(C11) 8.1 auto简介 8.2 auto的使用细则 8.3 auto不能推导的场景 9. 基于范围的for循环(语法糖)(C11) 9.1 范围for的语法 9.2 范围for的使用条件 10. 指针空值nullptr(C11) 7.内联函数 7.1 概念 以inline修饰的函数…

折腾 Quickwit,Rust 编写的分布式搜索引擎 - 从不同的来源摄取数据

摄取 API 在这节教程中&#xff0c;我们将介绍如何使用 Ingest API 向 Quickwit 发送数据。 要跟随这节教程&#xff0c;您需要有一个本地的 Quickwit 实例正在运行。 https://quickwit.io/docs/get-started/installation 要启动它&#xff0c;请在终端中运行 ./quickwit run。…

Python | Leetcode Python题解之第382题链表随机节点

题目&#xff1a; 题解&#xff1a; class Solution:def __init__(self, head: Optional[ListNode]):self.head headdef getRandom(self) -> int:node, i, ans self.head, 1, 0while node:if randrange(i) 0: # 1/i 的概率选中&#xff08;替换为答案&#xff09;ans …

Git分支原理、操作及实际开发中如何规范使用分支

&#x1f600;前言 在这篇博文中&#xff0c;我将与大家分享关于Git分支管理的内容。Git作为一个分布式版本控制系统&#xff0c;在协同开发和版本控制中扮演着至关重要的角色。通过这篇文章&#xff0c;您将深入了解Git分支的原理、操作以及在实际开发中如何规范使用分支。希望…

【数据结构】-----哈希

目录 一、哈希表概念 二、哈希函数 三、哈希冲突 Ⅰ、定义 Ⅱ、解决 ①闭散列--开放定址法 线性探测 二次线性探测 ②开散列--链地址法&#xff08;哈希桶&#xff09; 问题&#xff1a;哈希表何时扩容&#xff1f; 一、哈希表概念 哈希表又称散列表&#xff0c;它是一…

【河北航空-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

css的“id选择器“命名问题

项目场景&#xff1a; 工程里面&#xff0c;使用到了CSS的”id选择器"&#xff0c;想让某个p标签的元素发生改变 问题描述 为什么每个p标签的元素&#xff0c;都发生了改变 <!DOCTYPE html> <html lang"en"><head><meta charset"U…

mqtt的理解

1、emqx各个端口 1883是emqx服务端的监听端口&#xff0c;通俗的讲就是emqx服务端会一直监听有哪个客户端想要连接我&#xff0c;比如springboot的MqttClient类中设置了host "tcp://192.168.1.1:1883"&#xff0c;该springboot程序作为客户端要连接到emqx服务端&am…

20.神经网络 - 搭建小实战和 Sequential 的使用

神经网络 - 搭建小实战和 Sequential 的使用 在 PyTorch 中&#xff0c;Sequential 是一个容器&#xff08;container&#xff09;类&#xff0c;用于构建神经网络模型。它允许你按顺序&#xff08;sequential&#xff09;添加不同的网络层&#xff0c;并将它们串联在一起&…

【滑动窗口法解决子数组,子串问题】

前言 在leetCode题解中看到一位大佬针对滑动窗口法解决子数组&#xff0c;子串问题的总结&#xff0c;觉得总结的非常好&#xff0c;成功地将滑动窗口法变成了默写题&#xff0c;在这里学习记录一下。 适用于 76.最小覆盖子串 567.字符串的排列 438.找到字符串中所有字母异位词…

c++习题27-大整数减法

目录 一&#xff0c;题目 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;题目 输入 共2行&#xff0c;第1行是被减数a&#xff0c;第2行是减数b(a > b)。每个大整数不超过200位&#xff0c;不会有多余的前导零。 输出 一行&#xff0c;即所求的差。 样例输入1…

SpringBoot项目路由信息自动化提取脚本

文章目录 前言工具开发1.1 ChatGPT初探1.2 初版代码效果 WebGoat适配2.1 识别常量路由2.2 适配跨行定义 进阶功能优化3.1 识别请求类型3.2 识别上下文值 总结 前言 最近工作上遇到一个需求&#xff1a;提取 SpringBoot 项目中的所有路由信息&#xff0c;本来想着这是一个再普通…

【随笔】使用spring AI接入大语言模型

引言 随着人工智能的发展&#xff0c;越来越多的应用开始集成AI模型来增强用户体验。OpenAI提供的大语言模型是目前最受欢迎的自然语言处理模型之一&#xff0c;能够处理各种语言任务&#xff0c;如文本生成、对话理解等。在Java开发中&#xff0c;我们可以利用Spring AI框架轻…

android 离线的方式使用下载到本地的gradle

1、android studio在下载gradle的时候&#xff0c;特别慢&#xff0c;有的时候会下载不完的情况&#xff0c;这样我们就要离线使用了。 2、下载Gradle Gradle | Releases 或者 Releases gradle/gradle GitHub Gradle | Releases 这里我们下载8.10 complete版本&#xff0c…

Python GraphQL 库之graphene使用详解

概要 随着 Web 技术的发展,GraphQL 已成为 REST 的一种强有力替代方案,为客户端提供了更灵活的数据查询方式。Graphene 是一个用于构建 GraphQL API 的 Python 库,它使得开发者可以轻松地将复杂的数据模型暴露为 GraphQL API。通过 Graphene,开发者可以利用 Python 的面向…

【战略游戏】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1510, M N; int h[N], e[M], ne[M], idx; int f[N][2]; int n; bool st[N]; int root; void add(int a, int b) // 添加一条边a->b {e[idx] b, ne[idx] h[a], h[a] idx ; } void dfs(int …