说明:收录全网最新的团体标准 提供单次或批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211487097.4 (22)申请日 2022.11.25 (71)申请人 金现代信息产业股份有限公司 地址 250000 山东省济南市高新区新 泺大 街1166号奥盛大厦2号楼21层东区 2101 (72)发明人 黎峰 王宾宾 谢玉鑫 张鹏  许明  (74)专利代理 机构 济南圣达知识产权代理有限 公司 372 21 专利代理师 闫伟姣 (51)Int.Cl. G06F 9/455(2006.01) G06F 9/445(2018.01) G06F 16/955(2019.01) (54)发明名称 一种基于Spring的模块热部署方法及系统 (57)摘要 本发明涉及模块化技术领域, 公开了一种基 于Spring的模块热部署方法及系统, 所述方法包 括以下步骤: 创建新的Sp ring容器和新的类加载 器; 基于所述类加载器加载待部署模块的JAR文 件, 并对其配置文件进行解析, 得到所述待部署 模块的唯一标识符; 将所述待部署模块装载至所 述Spring容器, 并基于 所述唯一标识符命名所述 Spring容器。 本发明通过为待加载模 块创建单独 的类加载器和Sp ring容器, 实现了类之间以及模 块之间的隔离, 解决了可能的包冲突、 类冲突问 题。 权利要求书1页 说明书6页 附图2页 CN 115543546 A 2022.12.30 CN 115543546 A 1.一种基于Spri ng的模块热部署方法, 其特 征在于, 包括以下步骤: 创建新的Spri ng容器和新的类加载器; 基于所述类加载器加载待部署模块的JAR文件, 并对其配置文件进行解析, 得到所述待 部署模块的唯一标识符; 将所述待部署模块装载至所述Spring容器, 并基于所述唯一标识符命名所述Spring容 器。 2.如权利 要求1所述的基于Spring的模块热部署方法, 其特征在于, 当所述模块被调用 时, 宿主应用基于所述唯一标识符调用对应的Spri ng容器, 获取其中的类。 3.如权利 要求1所述的基于Spring的模块热部署方法, 其特征在于, 若所述模块的配置 文件中包括URL路径映射, 将所述URL路径和模块的唯一标识符均同步至宿主应用的Spr ing 容器中。 4.如权利 要求3所述的基于Spring的模块热部署方法, 其特征在于, 当所述模块被调用 时, 基于所述模块的唯一标识符确定相应URL, 根据所述URL定位对应的Spr ing容器, 获取其 中的类。 5.如权利 要求1所述的基于Spring的模块热部署方法, 其特征在于, 若所述模块的配置 文件中包括与所述唯一标识符绑定的业务场景标签, 将所述业务场景标签和模块唯一标识 符均同步至宿主应用的Spri ng容器中。 6.如权利 要求5所述的基于Spring的模块热部署方法, 其特征在于, 当所述模块被调用 时, 根据所述 业务场景标签查找相应Spri ng容器, 获取 所需类。 7.一种基于如权利要求1 ‑6任一项所述模块热部署方法的模块卸载方法, 其特征在于, 基于所述唯一标识符获取待卸载模块对应的类加载器和Spri ng容器, 执 行删除。 8.一种基于Spri ng的模块热部署系统, 其特 征在于, 包括: 新模块监测单元, 用于创建新的Spri ng容器和新的类加载器; 新模块加载单元, 用于基于所述类加载器加载待部署模块的JAR文件, 并对其配置文件 进行解析, 得到所述待部署模块的唯一标识符; 将所述待部署模块装载至所述Spr ing容器, 并基于所述唯一标识符命名所述Spri ng容器。 9.如权利 要求8所述的基于Spring的模块热部署系统, 其特征在于, 当所述模块被调用 时, 宿主应用基于所述唯一标识符调用对应的Spri ng容器, 获取其中的类。 10.如权利要求8所述的基于Spring的模块热部署系统, 其特征在于, 还包括模块卸载 单元, 用于基于所述唯一标识符获取 所述模块对应的类加载器和Spri ng容器, 执 行删除。权 利 要 求 书 1/1 页 2 CN 115543546 A 2一种基于Spring的模块热部署方 法及系统 技术领域 [0001]本发明属于模块化技术领域, 尤其涉及一种基于Spring的模块热部署方法及系 统。 背景技术 [0002]本部分的陈述仅仅是提供了与本发明相关的背景技术信息, 不必然构成在先技 术。 [0003]对于一个复杂应用程序, 传统系统都是将功能进行划分成Web层 (controller) 、 Service层 (业务层) 、 Dao层 (数据库持久化层) , 在功能模块数量比较大情况下, 难免多个功 能模块存在一些依赖 关系, 造成模块之 间高度耦合, 无法实现模块解耦分离, 使得模块的复 用性降低。 因此, 出于长远角度考虑, 通常根据模块业务逻辑不同, 将系统进行业务模块划 分, 即对业务模块进行解耦, 实现模块独立和复用性。 在大型软件开发过程中, 通常会推荐 底层功能插 件化、 业务功能模块 化的开发模式, 以期达 到低耦合、 高 内聚、 功能复用的优点。 [0004]目前模块 化实现方式如下几种方式: (1) 基于代码组织的模块化。 在开发期间, 将不同功能代码放在不同的Java工程 下, 在编译器被打进不同JAR文件, 在运行期, 所有Java类都在一个Classpath下, 这种实现 方式很容 易出现由于不同Java工程下JAR文件版本不 一致, 导致的JAR文件冲突问题。 [0005](2) 通过实例隔离 实现模块化。 借用Spring容器上下文来做不同功能模块的隔离, 在开发和编译期间, 代码和配置分布在不同的Java功能中, 在运行期间, 不同模块的 Springbean (Sp ring管理Java对象) 相互不可见, DI (依赖注入) 只会在同一Spring上下文内 部发生。 这种方式无法解决类的隔离 问题, 业务模块加载无法解决在不重启的情况下加载 新的业务模块; 不改造线上 的环境情况进行直接访问新加载的业务模块, 无法做到模块的 访问的灵活配置 。 [0006](3) 基于类加载器 (Classloader) 实现模块化。 每个模块都有独立的类加载器, 模 块之间的类 路径 (Classpath) 不同, 基于这种方式无法解决加载jvm内存的类在同一Spring 容器中类的隔离 。 发明内容 [0007]为克服上述现有技术的不足, 本 发明提供了一种基于Spring的模块热部署方法及 系统, 通过为待加载模块创建单独的类加载器和Spring容器, 实现了类之间以及模块之间 的隔离, 解决了可能的包冲突、 类冲突问题。 [0008]为实现上述目的, 本发明的一个或多个实施例提供了如下技 术方案: 一种基于Spri ng的模块热部署方法, 包括以下步骤: 创建新的Spri ng容器和新的类加载器; 基于所述类加载器加载待部署模块的JAR文件, 并对其配置文件进行解析, 得到所 述待部署模块的唯一标识符;说 明 书 1/6 页 3 CN 115543546 A 3

.PDF文档 专利 一种基于Spring的模块热部署方法及系统

文档预览
中文文档 10 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共10页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于Spring的模块热部署方法及系统 第 1 页 专利 一种基于Spring的模块热部署方法及系统 第 2 页 专利 一种基于Spring的模块热部署方法及系统 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 16:32:13上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。