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修改的原因是 重启!