史上最简单的SpringBoot教程之浅析热部署

SpringBoot实战教程-热部署 项目的热部署,就是在应用程序在不停止的情况下,实现新代码的部署。对于Java应用程序来说,热部署就是在运行时更新Java类文件。 阅读详情

一、前言

在我们编写代码的时候,您会发现我们只是把返回的信息改变了或者增加了一个方法,就需要重新启动服务,如果以这种方式编码,我们平时开发就会非常头疼,那么如何解决热部署问题呢?这里Spring boot给出了一个解决方案,就是使用springloaded。

二、准备

开发环境:1.7.0_79
开发工具:Eclipse
项目管理工具:Maven3
操作系统:Windows8

Spring boot版本:1.4.1.RELEASE

三、案例

我们将上一篇《史上最简单的SpringBoot教程之如何使用FastJson解析JSON数据》工程拷贝一份,搭建一个新的Maven工程SpringBootHotDeploy


右键Run As -> Java Application,启动应用,使用http://localhost:8080/getUser访问应用


那我们如果修改userName为汤姆呢,在不重启服务的情况下。这时候我们发现修改之后,继续访问,并没有返回我们想要的结果。这时候我们需要在POM文件中添加springloaded依赖做如下配置:

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<dependencies>
				<!-- spring热部署 -->
				<dependency>
					<groupId>org.springframework</groupId>
					<artifactId>springloaded</artifactId>
					<version>1.2.4.RELEASE</version>
				</dependency>
			</dependencies>
			<executions>
				<execution>
					<goals>
						<goal>repackage</goal>
					</goals>
					<configuration>
						<classifier>exec</classifier>
					</configuration>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>
依赖添加完成,这时候我们以springboot:run的方式启动我们的服务。

选择工程 -> Run As -> Run Configurations,如图:


启动服务成功后,我们修改SpringBootHotDeployController中的getUser方法

@RequestMapping(value="/getUser", produces = "application/json; charset=utf-8")
public User getUser() {
	User user = new User();
	user.setId(1);
	user.setLoginId("queen");
	user.setUserName("汤姆");
	user.setEmail("12345678@qq.com");
	user.setCreateDate(new Date());
	return user;
}

将userName修改 汤姆,这时候查看返回值,发现已修改。


这样我们就是实现了热部署
♦但是这种部署方式springboot:run有点问题

当我们在Eclipse上关闭服务后,实际上并没有真正关闭,当我再次开启服务时会报端口已占用的提示:

Caused by: java.net.BindException: Address already in use: bind
	at sun.nio.ch.Net.bind0(Native Method) ~[na:1.7.0_79]
	at sun.nio.ch.Net.bind(Net.java:444) ~[na:1.7.0_79]
	at sun.nio.ch.Net.bind(Net.java:436) ~[na:1.7.0_79]
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214) ~[na:1.7.0_79]
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[na:1.7.0_79]
	at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:228) ~[tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:874) ~[tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:590) ~[tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.catalina.connector.Connector.startInternal(Connector.java:969) ~[tomcat-embed-core-8.5.5.jar:8.5.5]
	... 14 common frames omitted
那我们要怎么解决这种问题呢?明天我们将继续介绍第二种启动方式来避免这种问题的出现。
至此,我们的Spring boot学习篇之浅析热部署第一种方式介绍完毕。


=======欢迎大家拍砖,小手一抖,多多点赞哟!=======

版权声明:本文为博主原创文章,允许转载,但转载必须标明出处。


中兴畅行60 ZTE 7552N 深度改造指南:从解锁BL到Magisk Root与IMEI硬改全流程 本文详细介绍了中兴畅行60(ZTE 7552N)的深度改造全流程,包括解锁BL、刷入Magisk获取Root权限以及IMEI硬改等关键步骤。通过专业的操作指南和实用技巧,帮助用户安全完成设备改造,同时提醒注意法律风险和技术难点。 阅读详情

相关推荐

ROS2+PYTHON VENV虚拟环境配置方法

ROS2+PYTHON VENV配置方法本篇针对的是python。

下雨夏云的博客 557

Caused by: java.net.BindException: Address already in use: bind

Caused by: java.net.BindException: Address already in use: bind

卿着飞翔 1万+

iTunes登录协议抓包实战:绕过反检测与TLS解密的完整方案

在软件逆向与网络协议分析中,抓包工具扮演着关键角色。代理型工具如Fiddler通过修改系统代理实现HTTPS解密,而驱动型工具如HTTPDebugger则注入进程钩取网络API,但这些实现机制往往会被具有反检测策略的客户端识别。以iTunes登录协议为例,其内置证书锁定、进程完整性与系统代理检测等防护,导致常规抓包方案失效。从工具原理出发,对比不同抓包方案的暴露面,重点介绍如何利用Fiddler通过中间人代理获取明文流量,以及使用Wireshark进行被动监听规避检测的进阶技巧,并总结常见问题排查经验,为分

weixin_28607671的博客 367

超详细的Springboot入门教程,看了必会

超详细的Springboot入门教程,看了必会

weixin_48227718的博客 2万+

Jenkins插件下载慢?3分钟搞定国内镜像加速(含华为/腾讯/清华源对比)

本文详细介绍了如何通过国内镜像源加速Jenkins插件下载,包括华为云、腾讯云和清华源等主流镜像站的性能对比及一键配置方案。通过实测数据展示华为云镜像站表现最佳,下载速度达19.4MB/s,并提供sed命令、管理界面配置和Docker定制三种高效加速方案,帮助开发者快速解决插件下载慢的问题。

sql99的博客 320

grafana对接zabbix数据展示

【配置】点击【模板】点击【创建模板】添加三个监控项:【名称】搜索【】创建的模板;点击上方【监控项】,点击创建【监控项】点击上方【触发器】点击【创建触发器】主机关联监控模板:左侧【配置】点击 【主机】点击【Zabbix server】查看:左侧点击【监测】点击【主机】点击【Zabbix server】点击最新数据,找到添加的三个模板主机关联监控模板:左侧【配置】点击 【主机】点击【Zabbix server】把监控模板用起来① 明确获取指标数据的方法。

2401_83883919的博客 6595

SpringBoot基础

SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成application.properties配置文件的配置 能够完成application.yml配置文件的配置 能够使用SpringBoot集成Mybatis 能够使用SpringBoot集成Junit 能够...

vampire_Violet的博客 3004

反射机制——通过反射调用service中方法

需求:现在有一群service接口,有同一个方法名称,内部逻辑除了调用不同的调用自身的方法外其他基本都一致,那现在就需要一个独立的方法来勾勒出这个方法 1.SpringContextUtil package com.XXX.report.util; import org.apache.log4j.Logger; import org.springframework.beans.BeansE...

东天里的冬天 8521

超详细的springBoot学习教程,springboot学习看这篇就够了

springBoot学习 https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/index.html (官方文档) spring boot的Maven基础配置 1.父项目springboot的版本仲裁管理依赖的版本号 <!-- 父项目springboot的版本仲裁管理依赖的版本号,后续导入就不需要导入版本号了...

lin1214000999的博客 7万+

Kotlin kapt插件报错全解析:从Could not load module到彻底解决(含Gradle 8.2.2适配指南)

本文深度解析了Kotlin开发中常见的kapt插件报错“Could not load module”的根源,并提供了从诊断到解决的完整方案。重点探讨了Gradle 8.2.2与Kotlin 1.9.x的兼容性问题,包括JVM IR后端冲突、配置缓存问题及依赖版本对齐,并给出了详细的调试技巧与迁移至KSP的建议。

rrr55的博客 315

2026年数字IC设计禾赛科技笔试带答案解析

本文介绍了一份数字IC设计工程师笔试的试卷结构和部分题目解析。试卷包含15道单选题(30分)、10道填空题(20分)和5道简答/编程题(50分),总分100分,考试时长120分钟。单选题涉及同步时序电路、Verilog语法、跨时钟域设计、FPGA优化、存储器层次、功耗优化等知识点;填空题考查环形振荡器、工艺参数、时序约束、LUT结构等基础概念。试题重点考察应聘者对数字电路设计核心概念的理解和实际工程应用能力,特别是针对激光雷达芯片设计中的关键技术点进行考核。

Open 123

springboot实现热部署

在实际开发中,我们做好的项目难免会出现一些问题,但是我们知道我们处理完这些问题后,我们需要重启一下服务器那么我们处理完问题后的项目才能生效(也就是说:修改了项目的代码后需要重启一下服务器然后修改后的项目才生效,不重启服务器的话要不然还是以前代码),因此这样每次修改项目问题的时候我们都要重启一次服务器在实际开发中是非常麻烦的,因此热部署就解决了这个问题,热部署可以在我们修改完项目代码后不用重启服务器就能把项目代码部署到服务器中(也就是说修改完项目代码后不用重启服务器修改后的项目代码就能生效)...

lwj_07的博客 2万+

6.10华为OD机试真题 新系统 - 查找温度记录统计信息 (Java/Py/C/C++/Js/Go)

6.10华为OD机试真题 新系统 - 查找温度记录统计信息 (Java/Py/C/C++/Js/Go)

算法大师! 437

SpringBoot实现热部署

深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。

2301_80092713的博客 7465

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

一文了解SpringBoot如何开启热部署

​ 热部署的功能是如何实现的呢?这就要分两种情况来说了,非springboot工程和springboot工程的热部署实现方式完全不一样。先说一下原始的非springboot项目是如何实现热部署的。非springboot项目热部署实现原理​ 开发非springboot项目时,我们要制作一个web工程并通过tomcat启动,通常需要先安装tomcat服务器到磁盘中,开发的程序配置发布到安装的tomcat服务器上。如果想实现热部署的效果,这种情况其实有两种做法,一种是在tomcat服务器的配置文件中进行配置,

Learning_xzj的博客 9349

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringBoot热部署详解

热部署,就是不需要停掉服务,可以线上改,改完立马生效。

知足上进,不负野心。 2万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【SpringBoot】一文了解SpringBoot热部署

我们在了解一个东西的时候,总是喜欢问的就是为什么要?就是为什么我们需要这个,至少你要告诉我用这个的好处是什么;知道了需求然后学习,效率会好一些。所以,我们为什么要学习热部署?想象一下这个情况,我们在开发的过程中,每次修改都要重启服务器才能够去重新部署项目,在项目较小的情况下还能忍受,但是如果做的是一个大型项目,部署一次消耗的时间成本很高。所以热部署的作用就是为我们免去这些时间上的损耗。热部署是更改代码或者配置直接生效,不用重新启动运行,这就是热部署。

未来可以改变 2253

[SpringBoot系列]热部署

本文涉及热部署的实现原理、手动启动热部署、自动启动热部署、参与热部署监控的文件范围配置、关闭热部署

十八岁讨厌编程的博客 1671

SpringBoot热部署

目录一、手动启动热部署二、自动启动热部署三、热部署范围配置四、关闭热部署 热部署的理解 通俗点说就是你的程序更改了,需要重新启动服务器再才会生效,嫌麻烦?嫌耗时?不想重启,服务器会悄悄的把更新好的程序重新加载一次,这就是热部署。 一、手动启动热部署 步骤①:导入对应的坐标 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools

qq_51938362的博客 5591

Springboot热部署的三种方式

1.spring-boot-devtools 第一种方式是通过Springboot提供的开发者工具spring-boot-devtools来实现。 首先在pom.xml引用其依赖: <!--快重启--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools&

四叶猫的博客 1万+

【SpringBoot】springboot启动热部署

SpringBoot工程手动、自动开启热部署,热部署范围控制,热部署关闭

ebb29bbe的博客 2292

【热部署】✈️Springboot 项目的热部署实现方式

本地开发通过热部署避免每次手动重启,加速开发效率

产品经理克星(狗头) 5288

SpringBoot实现热部署详解

Spring Boot热部署是一种开发时极为有用的功能,它能够让开发人员在代码修改后无需手动重启应用程序就能立即看到变化的效果。如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达!

Venus's Blog 5万+

SpringBoot入门之SpringBoot热部署,什么是热部署 04

3. SpringBoot热部署 3.1 什么是热部署 热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。SpringBoot热部署就是在项目正在运行的时候修改代码, 却不需要重新启动项目. SpringBoot提供了热部署方案,大大提高了开发效率, 因为频繁的重启项目,势必会浪费很多时间, 有了热部署后,妈妈再也不用担心我修改代码重启项目了~ 3.2 SpringBoot如何热部署...

啊策策大数据社区 7564

SpringBoot在IDEA里实现热部署

SpringBoot在IDEA里实现热部署背景介绍开启IDEA的自动编译1.所有新项目开启2.当前项目开启开启IDEA的自动编译配置开启当前项目的热部署策略在pom文件中添加插件结语 背景介绍 我这里的IDEA版本是2021.1.3,可能版本不同,设置的地方会有差别 在公司的项目中遇到的一个问题,那就是在开发客户的一个系统时,因为登录是需要手机验证码的,每一次测试都需要向客户要验证码,开发过程中哪怕是一个小的改动都需要重新获取验证码测试,所以就找了下实现热部署的方式,这里记录一下。大大的减少了索要验证码的

大梦几千秋的博客 1万+
上一篇: 史上最简单的SpringBoot教程之如何使用FastJson解析JSON数据
下一篇: 老司机学习MyBatis之一级、二级缓存的相关设置详解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值