Spring Boot2.0之热部署原理
所谓的热部署:比如项目的热部署,就是在应用程序在不停止的情况下,实现新的部署
原理: 实用类加载器(classloader重新读取字节码文件到jvm内存)
如何纯手写一个热部署功能:
1、监听 class文件是否发生改变 版本号、修改时间 作对比
2、如果发生改变就用classloader进行重新读取
热部署要是用在生产环境,性能很差了。不安全!
热部署用在本地开发(eclipse idea)用来提高效率
Spring Boot使用 devtools做热部署
有些工具是有热部署的功能的
修改完代码---》然后按保存--》访问时候其实会重启

访问引发重启!
这样读到的都是新的:
package com.toov5.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
public class IndexController {
@Value("${name}")
private String name;
@RequestMapping("/index")
public String index() {
String result = "修改啊来啊";
log.info("result:{}", result);
return result + name;
}
}
访问:

devtools修改的原因是 重启!
本文深入探讨SpringBoot中热部署的原理与应用,通过监听Class文件变化并利用类加载器重新加载字节码,实现代码修改后的即时生效,极大提升本地开发效率。然而,热部署在生产环境中因性能损耗及安全性考虑,并非最佳实践。
1万+

被折叠的 条评论
为什么被折叠?



