SpringBoot 热部署

什么是热部署?

比如在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动后的效果,经常需要重启启动类来查看改变的效果,否则将不能看到新增代码的效果,这一过程很多时候是非常浪费时间的,导致开发效率极低。这个时候热部署就可以在改动代码的时候自动实现项目的重启并部署,有效地提高了开发调试的效率

spring-boot-devtools热部署的原理

spring-boot-devtools是一个为开发者服务模块,其中最重要的功能就是自动实现更新的应用代码更改到最新的应用上

这个模块的工作原理就是在发现代码有更改之后,自动重新启动应用,但是速度比手动停止后再启动要更快。

其更深层原理是使用了两个ClassLoader,一个ClassLoader加载那些不会改变的类(例如第三方jar包),另一个ClassLoader加载会更改的类,称为RestartClassLoader。这样在有代码更改的时候,原来的Restart ClassLoader就会被丢弃,重新创建一个Restart ClassLoader加载更新的类,但是往往需要加载的类比较少,所以才会有上面那句速度比手动停止后再启动要更快。

使用spring-boot-devtools进行热部署

在pom.xml文件中引入依赖

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

还需要在插件中添加

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<!--如果没有这个配置,热部署不会起作用,也不会restart-->
				<fork>true</fork>
			</configuration>
		</plugin>
	</plugins>
</build>

application.properties配置

#热部署
#设置开启热部署
spring.devtools.restart.enable = true
#页面不加载缓存,修改及时生效
spring.freemarker.cache = false

编写一个Controller类

@Controller
public class HelloController{
	@RequestMapping("/")
	@ResponseBody
	public String index(){
	    return "SpringBoot热部署";
	}
}

直接启动启动类,访问 localhost:8080/ 可以看到页面显示了我们return的内容
然后我们修改一下return的内容

@Controller
public class HelloController{
	@RequestMapping("/")
	@ResponseBody
	public String index(){
	    return "SpringBoot热部署了";
	}
}

这时候不用再次启动了,直接访问 localhost:8080/ 就可以,即使是新建一个Controller、修改配置文件也可以做到热部署
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值