# est-spi-module **Repository Path**: est-spi/module ## Basic Information - **Project Name**: est-spi-module - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-15 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EST SPI Module [English Version](README.en.md) ## EST SPI 模块管理 est-spi-module 是 EST SPI 框架的模块管理模块,提供了模块生命周期管理、依赖管理、拓扑排序启动等功能。 ### 核心功能 #### Module - 模块接口 所有模块必须实现的接口,继承自Lifecycle,包含模块名称、版本、描述等基本信息。 #### ModuleDependency - 模块依赖 定义模块之间的依赖关系,支持版本范围和可选依赖。 #### ModuleContext - 模块上下文 为每个模块提供独立的上下文环境,用于存储和管理模块属性。 #### ModuleLoader - 模块加载器 负责加载模块,支持从类名或Class对象加载模块实例。 #### ModuleManager - 模块管理器(单例) 模块管理的核心类,负责: - 模块注册/注销 - 依赖管理 - 按依赖关系拓扑排序启动/停止模块 - 循环依赖检测 ### 快速开始 #### 定义模块 ```java import ltd.idcu.est.spi.module.Module; public class MyModule implements Module { private volatile boolean started = false; @Override public String getName() { return "my-module"; } @Override public String getVersion() { return "1.0.0"; } @Override public String getDescription() { return "My test module"; } @Override public void start() { System.out.println("Starting " + getName()); started = true; } @Override public void stop() { System.out.println("Stopping " + getName()); started = false; } @Override public boolean isStarted() { return started; } } ``` #### 注册和启动模块 ```java import ltd.idcu.est.spi.module.Module; import ltd.idcu.est.spi.module.ModuleManager; import ltd.idcu.est.spi.module.ModuleDependency; public class Example { public static void main(String[] args) { ModuleManager manager = ModuleManager.getInstance(); Module moduleA = new MyModule(); Module moduleB = new AnotherModule(); manager.registerModule(moduleA); manager.registerModule(moduleB); manager.addDependency("module-b", new ModuleDependency("my-module")); manager.startAll(); System.out.println("All modules started"); manager.stopAll(); } } ``` #### 使用模块上下文 ```java import ltd.idcu.est.spi.module.ModuleContext; import ltd.idcu.est.spi.module.ModuleManager; public class Example { public static void main(String[] args) { ModuleManager manager = ModuleManager.getInstance(); ModuleContext context = manager.getContext("my-module"); context.setAttribute("key", "value"); String value = context.getAttribute("key"); System.out.println(value); } } ``` ### Maven 依赖 ```xml ltd.idcu.est.spi est-spi-module 1.0.0 ``` ### 许可证 MIT License