首页 > 社交 > 科普中国

SpringCloudAlibaba

常驻编辑 科普中国 2022-11-11 监听器   注解   缓存   容器   组件   源码   深度   加载   对象   事件   操作   方法   章节   中心

父类就是 GenericScope,我们知道 Spring 中的 Bean 是有Scope 的概念的,Spring 默认 Scope 有单例和原型两种,同时提供了 Scope 扩展接口,通过实现该接口我们可以定义自己的 Scope。4W5拜客生活常识网

4W5拜客生活常识网

通过doGetBean 方法可以看出,这些自定义 Scope 类型对象的管理会交给相应的 Scope 实现去管理。4W5拜客生活常识网

4W5拜客生活常识网

SpringCloud 实现的 RefreshScope 就是用来在运行时动态刷新 Bean 用的,RefreshScope 继承 GenericScope,提供 get 和 destroy 方法。4W5拜客生活常识网

4W5拜客生活常识网

GenericScope 内部有一个 cache,用来保存所有该 Scope 类型的对象。4W5拜客生活常识网

4W5拜客生活常识网

回到主线,所以在 refreshAll 中调用 super.destroy 方法时会将该 scope 的这些 Bean 都销毁掉,在下次 get 的时候在重新创建 Bean,新创建的 Bean 就有了我们最新的配置。4W5拜客生活常识网

4W5拜客生活常识网

4W5拜客生活常识网

至此,我们就实现了配置热更新的效果了。4W5拜客生活常识网

总结

文章从服务启动时的配置拉取,服务启动后的配置监听器注册,以及配置变动后的热更新实现三个方面从源码层面解析了整个的原理,希望对大家有所帮助。4W5拜客生活常识网


作者:CodeFox
链接:https://juejin.cn/post/7164283773318594597
来源:稀土掘金

4W5拜客生活常识网

相关阅读:

  • 分支信息注释
  • Spring
  • 抄书第十六天,今天你微笑了吗
  • 一波带走,SpringBoot
  • 最真实的注解,值得永久收藏
  • 自定义的配置文件,如何注入到SpringBoot?
  • 道德经第四十六章原文及注解 第十四章道德经解释 道德
  • Eureka源码3
  • Mybatis框架使用(一)
  • 八月的最后一个星期天,我“奢侈”了
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。