首页 > 新闻 > IT新闻 > 正文

loveqq 框架新增 ApplicationScope,IOC 全量容器刷新也可保持单例

心靈之曲
发布: 2025-10-23 17:57:02
原创
845人浏览过

loveqq 框架新增 applicationscope,ioc 全量容器刷新也可保持单例

是什么?

ApplicationScope 是什么?

ApplicationScope 是 loveqq-framework 框架最新引入的一种 Bean 作用域,其核心特性在于:即使在 IOC 容器进行全量刷新时,依然能维持 Bean 的单例性

目前 loveqq-framework 支持的作用域包括:

  • 单例(Singleton):默认作用域,但在每次调用 ApplicationContext#refresh() 时会被销毁并重建
  • 原型(Prototype):每次请求获取都会创建一个全新实例
  • 线程(Thread):同一线程内共享同一实例,线程结束则自动清理
  • 应用(ApplicationScope):跨刷新周期保持唯一实例,真正意义上的全局单例

为什么需要它?

随着框架对插件化开发的支持增强,IOC 容器的全量刷新功能变得尤为重要。通过调用 refresh() 方法,可以重新加载整个应用上下文,实现如热更新插件等动态能力——例如通过 HTTP 接口上传 JAR 包即可实时扩展功能。

然而,这种机制也带来了一个问题:所有 Bean 都将被销毁并重建。对于某些重量级组件(如 WebServer),虽然重启耗时较短,但仍可能导致短暂的服务不可用(毫秒级),影响“零停机”体验。

为此,ApplicationScope 应运而生。将其应用于关键 Bean(如 WebServer),可确保其在整个应用生命周期中始终唯一存在,从而实现真正的无中断热部署与动态刷新

不重建如何同步变更?

如果 WebServer 实例不重建,但刷新后新增了 Controller 接口,那新路由无法注册,访问时会返回 404,该如何解决?

可灵AI
可灵AI

可灵AI:新一代AI创意生产力平台

可灵AI10856
查看详情 可灵AI

答案是:实现 ScopeRefreshed 接口

当某个 Bean 实现了该接口,在其所处作用域刷新时,框架不会销毁和重建它,而是触发 onScopeRefreshed() 回调方法。开发者可在该方法中自定义刷新逻辑,比如重新扫描控制器、更新路由映射表等。

这样一来,既保留了原有实例,又完成了状态同步,完美兼顾稳定性与灵活性。具体使用示例可参考项目文档或源码中的实际案例。

感兴趣的同学欢迎查看源码了解更多细节:

源码地址:点击下载

以上就是loveqq 框架新增 ApplicationScope,IOC 全量容器刷新也可保持单例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号