0

0

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

心靈之曲

心靈之曲

发布时间:2025-10-23 17:57:02

|

887人浏览过

|

来源于php中文网

原创

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,该如何解决?

DeepL
DeepL

DeepL是一款强大的在线AI翻译工具,可以翻译31种不同语言的文本,并可以处理PDF、Word、PowerPoint等文档文件

下载

答案是:实现 ScopeRefreshed 接口

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

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

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

源码地址:点击下载

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1017

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

62

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

400

2025.12.29

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

480

2023.08.10

Java 并发编程高级实践
Java 并发编程高级实践

本专题深入讲解 Java 在高并发开发中的核心技术,涵盖线程模型、Thread 与 Runnable、Lock 与 synchronized、原子类、并发容器、线程池(Executor 框架)、阻塞队列、并发工具类(CountDownLatch、Semaphore)、以及高并发系统设计中的关键策略。通过实战案例帮助学习者全面掌握构建高性能并发应用的工程能力。

60

2025.12.01

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

336

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

406

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

1713

2024.03.12

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Java 教程
Java 教程

共578课时 | 46.1万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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