什么是热部署?Spring Boot如何进行项目热部署?

2ce5455f8f35ec9f9b8439f8e0d2bdd2.gif

在开发过程中,通常会对一段业务代码不断地修改测试,在修改之后往往需要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作极大降低了程序开发效率。

为此,Spring Boot框架专门提供了进行热部署的依赖启动器,用于进行项目热部署,而无须开发人员手动重启项目。

下面,讲解如何进行热部署,具体步骤如下。

ef0c1aaecb17404d6bf870b73d9f4e55.png

1. 添加spring-boot-devtools 热部署依赖启动器

在Spring Boot项目进行热部署测试之前,需要先在项目的pom.xml文件中添加spring-boot-devtools热部署依赖启动器,示例代码如下。

<!--引入热部署依赖-->
   <dependency>
     <grouPtdsorg, gprlngtranevork.boot/groupid>
     <artifactId>spring-boot-devtools</artifactId>
   </dependency>

2. IDEA工具热部署设置

选择IDEA 工具界面的【File】→【Settings】选项,打开Compiler面板设置页面,具体如图所示。

142a3afbf97096a1629c41f74c99558e.png

△ Compiler面板设置页面

在上图所示的页面中,选择【Build,Execution,Deployment】→【Compiler】选项,在右侧勾选【Build project automatically】选项将项目设置为自动编译,单击【Apply】→【OK】按钮保存设置。

在项目任意页面中使用组合键“Ctrl+Shift+Alt+/”打开 Maintenance 选项框,选中并打开Registry界面,具体如图所示。

bc717961c6188099ed1f5e70573b1c2f.png

△ Compiler面板设置页面

在上图所示的列表中找到“compiler.automake.allow.when.app.running”,勾选对应的Value值将程序运行方式设置为自动编译,最后单击【Close】按钮完成设置。

3. 热部署效果测试

启动chapter01项目,通过浏览器访问“http://ocalhost:8080/hello”,具体如图所示。

2e5c923235f11ebf3e7dc21637cd7932.png

△ 热部署效果测试1

上图可以看出,页面原始输出的内容是“hello Spring Boot”。

为了测试配置的热部署是否有效,接下来在不关闭当前项目的情况下,将HelloController类中的请求处理方法hello()的返回值修改为“你好,Spring Boot”并保存,查看控制台信息会发现项目能够自动构建和编译,说明项目热部署生效。

此时,刷新热部署效果测试1所示的浏览器页面,效果如图所示。

caab3c0a92508b47081481d0a4ca84f3.png

△ 热部署效果测试2

从上图可以看出,浏览器输出了“你好,Spring Boot”,说明项目热部署配置成功。

76c84b868dfecbf23fdd323670ea59b4.pngcf68c709e2de5b17022a12fb758a96ad.pnga36e02e8c4a275fa2ded4ee9880ab7ce.png

以上就是播妞为大家分享的干货内容

希望对你有所帮助

 黑马程序员 

累计培养30余万名优质IT人才

8大学科火热报名中

基础班仅需28元,扫码咨询

6d3586322faa885c43a031066a8fdb96.png

咨询线上课程

可以直接添加播妞1对1解答哦

8ff4534d38d02d521a5b8c0693b24b92.jpeg

950e7df7b6d499510d1debeadbb5cf99.png

丨热门教程资源领丨

回复 【 领取资源 】 领《黑马8学科汇总教程》

回复 【 python 】 领《python入门教程》

回复 【 瑞吉外卖 】 领《瑞吉外卖项目教程》

回复 【 mysql1 】 领《Mysql入门到精通》

回复 【 毕业设计 】 领《Java毕业设计项目》

更多教程加播妞领取: heiniu526

(在下方公众号回复对应关键词,即可领取哦)

↓↓↓

25a90c61a4e1409cd769114f84b548f7.gif

<think>嗯,用户的问题非常聚焦:HotSeconds是否支持非Spring Boot项目的本地热部署。这需要结合插件原理和引用信息综合分析。 从引用[2][3]可以明确两个关键点:第一,HotSeconds的核心能力是通过字节码替换实现热更新,这种机制与框架无关;第二,它的设计目标就是通用Java应用场景。尤其引用[2]提到“也可以本地热部署”时并未限定框架,引用[3]强调“吊打市面插件”也暗示其广泛适用性。 不过用户可能需要更落地的验证。我想到几个技术支撑点:首先,插件通过附加到JVM的javaagent实现类重载,这是JVM标准特性;其次,其客户端插件只依赖项目引入的hotseconds-core.jar,框架无关;最后,引用[1]对比表格显示它比spring-boot-devtools更通用。 考虑到用户可能是传统JavaEE开发者,需要特别说明Servlet容器的支持情况。根据开源文档,Tomcat/Jetty等主流容器只要启动参数配置了-javaagent就能工作。配置文件路径这类细节也要提醒,比如WEB-INF/classes的资源路径差异。 应该强调“类加载隔离”这个潜在坑点。非SpringBoot项目往往有复杂的类加载层次,比如OSGi或自定义ClassLoader,这时需要参考HotSeconds文档配置白名单。另外静态变量问题在非Spring场景同样存在,需要同步说明。 </think>是的,**HotSeconds 完全支持非 Spring Boot 项目的本地热部署**,其热更新机制不依赖特定框架。以下是关键说明: --- ### **核心原理与支持范围** 1. **字节码替换技术** HotSeconds 通过 Java Agent 和字节码操作实现热更新,核心是 **JVM 的类重定义(`Instrumentation.redefineClasses()`)** [^2][^3]。该技术是 **JVM 原生能力**,与 Spring Boot 等框架无关。 2. **通用 Java 项目支持** 只要项目能在标准 JVM 上运行(如普通 Java 应用、Servlet 容器项目等),均可使用 HotSeconds 热部署: - **本地部署**:通过 IDEA 插件直接加载修改后的 `.class` 文件[^2][^3]。 - **配置要求**:仅需在 `JVM 启动参数` 中添加 `-javaagent:hotseconds-agent.jar`(本地开发时插件通常自动处理)[^3]。 --- ### **非 Spring Boot 项目操作步骤** 1. **添加依赖** 在项目中引入 HotSeconds 核心库(以 Maven 为例): ```xml <dependency> <groupId>io.github.hotseconds</groupId> <artifactId>hotseconds-core</artifactId> <version>最新版本</version> </dependency> ``` 2. **配置启动参数**(如需手动) 在运行配置中添加 JVM 参数: ``` -javaagent:path/to/hotseconds-agent.jar ``` 3. **使用 IDEA 插件热更新** 修改代码后点击插件 **Hot Deploy** 按钮,流程与 Spring Boot 项目一致[^2][^3]。 --- ### **注意事项** | 项目类型 | 支持情况 | 说明 | |----------------|-------------------------|----------------------------------------------------------------------| | **Servlet 项目** | ✅ 支持(Tomcat/Jetty) | 需确保 Agent 加载到容器的 JVM 中[^3] | | **普通 Java 应用** | ✅ 支持 | 通过 `main` 方法启动即可 | | **资源文件** | ✅ 支持 | 需确保文件路径在类加载路径中(如 `src/main/resources`)[^3] | | **结构性变更** | ⚠️ 部分支持 | 新增方法/字段需重启(JVM 限制),类方法修改可热更新[^2][^3] | > 💡 **示例场景**:一个基于纯 Servlet 的 Web 项目,在 Tomcat 中启动后,修改 `doGet()` 方法逻辑 → 点击 HotSeconds 插件按钮 → 立即生效无需重启容器。 --- ### **与框架绑定工具的区别** | 工具 | 框架依赖 | 非 Spring Boot 支持 | |-----------------------|-------------------|---------------------| | **spring-boot-devtools** | 强依赖 Spring Boot | ❌ 不支持 | | **HotSeconds** | 无依赖 | ✅ 完全支持 | HotSeconds 作为 **JVM 层解决方案**,其热更新能力建立在 Java 字节码操作上,而非框架特性[^1][^3],因此各类 Java 项目均可使用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值