引子:项目周边系统采用了SpringBoot 框架, 开发阶段顺利成章的引入 Devtools 组件。加载速度提升明显,于是翻看其实现原理。
它的秘密就在于 用RestartClassLoader 来加载 项目中自己的东西(可以不是代码),有变动只重新加载这一部分。
一个定时器(org.springframework.boot.devtools.filewatch.FileSystemWatcher.Watcher#run),不停地监听更改信息,如图
有变动就会触发更改事件,然后走listener链路…… 然后重新构建一个 RestartClassLoader 重新加载项目,这时候和第三方jar包没啥关系,
结果很明显,加载的类少了那么多,肯定快啊!!!