什么是热刷新?
Posted
技术标签:
【中文标题】什么是热刷新?【英文标题】:What is hot refresh? 【发布时间】:2019-09-07 13:30:29 【问题描述】:这是来自 1.6.1 的 Spring Framework Core 的 sn-p:生命周期回调:
另外,请注意,停止通知不能保证在销毁之前发出。在定期关闭时,所有
Lifecycle
bean 首先会在传播一般销毁回调之前收到停止通知。但是,在上下文生命周期内的热刷新或中止刷新尝试时,只会调用 destroy 方法。
跟实时重载有关系吗?
【问题讨论】:
我认为这是措辞上的轻微不一致,他们打算写hot swapping @Turing85 虽然我是这么想的,但是同一个词在Spring Framework Core中重复了两次,你可以在1.15.2中搜索。标准和自定义事件 我知道,我检查了文档 =)。不过,我会认为这是一个轻微的不一致。 热刷新是关于重新加载你的ApplicationContext
而不重启进程见***.com/questions/24720330/…
@josejuan 正确,但部分正确。
【参考方案1】:
自己回答问题。
ContextRefreshedEvent
在ApplicationContext
初始化或刷新时发布(例如,通过在ConfigurableApplicationContext
接口上使用refresh()
方法)。在这里,“初始化”意味着所有 bean 都已加载,后处理器 bean 被检测并激活,单例已预先实例化,ApplicationContext
对象已准备好使用。只要上下文没有关闭,就可以多次触发刷新,前提是选择的ApplicationContext
实际上支持这种“热”刷新。比如XmlWebApplicationContext
支持热刷新,GenericApplicationContext
不支持。
AbstractRefreshableWebApplicationContext
:
提供“configLocations”属性,在 Web 应用程序启动时通过
ConfigurableWebApplicationContext
接口填充。
这是在不重新启动应用程序的情况下替换其配置位置属性的 Web 应用程序上下文。
【讨论】:
我想我错了,对不起。为什么他们会称之为“热”清爽? 因为我猜"configLocations"
正在被替换。以上是关于什么是热刷新?的主要内容,如果未能解决你的问题,请参考以下文章