This commit is contained in:
2025-10-11 11:30:44 +08:00
parent 9a90f1258b
commit 49d7f2c37e
7 changed files with 861 additions and 0 deletions

View File

@@ -0,0 +1,179 @@
import { ServiceRegistry } from './ServiceRegistry'
import { ServiceProvider } from './ServiceProvider'
import { SystemServiceIntegration } from '../SystemServiceIntegration'
import { ServiceContainerImpl } from './ServiceContainerImpl'
/**
* 系统启动器
* 负责初始化整个系统,包括服务容器、服务注册和启动核心服务
*/
export class SystemBootstrapper {
private static instance: SystemBootstrapper
private serviceContainer: ServiceContainerImpl
private systemService: SystemServiceIntegration | null = null
private initialized = false
private constructor() {
this.serviceContainer = new ServiceContainerImpl()
}
/**
* 获取系统启动器实例
*/
public static getInstance(): SystemBootstrapper {
if (!SystemBootstrapper.instance) {
SystemBootstrapper.instance = new SystemBootstrapper()
}
return SystemBootstrapper.instance
}
/**
* 启动整个系统
* @param config 系统配置参数
* @returns 启动成功返回true失败返回false
*/
public async bootstrap(config?: {
debug?: boolean
autoCleanup?: boolean
cleanupInterval?: number
}): Promise<boolean> {
if (this.initialized) {
console.warn('系统已经启动')
return true
}
try {
console.log('开始启动系统...', config)
// 1. 初始化服务提供者
this.initializeServiceProvider()
// 2. 初始化系统服务集成层
this.initializeSystemService(config || {})
// 3. 启动所有服务
await this.startAllServices()
this.initialized = true
console.log('系统启动成功')
return true
} catch (error) {
console.error('系统启动失败:', error)
return false
}
}
/**
* 初始化服务提供者
* 注册并初始化所有服务
*/
private initializeServiceProvider(): void {
console.log('初始化服务提供者...')
// 初始化服务提供者,这会注册并初始化所有服务
ServiceProvider.initialize()
console.log('服务提供者初始化完成')
}
/**
* 初始化系统服务集成层
* 创建并配置SystemServiceIntegration实例
*/
private initializeSystemService(config: {
debug?: boolean
autoCleanup?: boolean
cleanupInterval?: number
}): void {
console.log('初始化系统服务集成层...')
// 获取服务容器
const container = ServiceRegistry.getInstance().getContainer()
// 创建系统服务集成实例,使用传入的配置
this.systemService = new SystemServiceIntegration(container, {
debug: config.debug ?? true,
autoCleanup: config.autoCleanup ?? true,
cleanupInterval: config.cleanupInterval ?? 5 * 60 * 1000 // 默认5分钟
})
console.log('系统服务集成层初始化完成')
}
/**
* 启动所有服务
*/
private async startAllServices(): Promise<void> {
console.log('启动所有服务...')
if (!this.systemService) {
throw new Error('系统服务集成层未初始化')
}
// 初始化系统服务
await this.systemService.initialize()
console.log('所有服务启动完成')
}
/**
* 获取系统服务实例
*/
public getSystemService(): SystemServiceIntegration | null {
return this.systemService
}
/**
* 检查系统是否已初始化
*/
public isInitialized(): boolean {
return this.initialized
}
/**
* 关闭系统
*/
public async shutdown(): Promise<void> {
if (!this.initialized) {
console.warn('系统未启动')
return
}
console.log('开始关闭系统...')
try {
// 关闭系统服务
if (this.systemService) {
await this.systemService.shutdown()
}
// 重置状态
this.systemService = null
this.initialized = false
console.log('系统已关闭')
} catch (error) {
console.error('关闭系统时发生错误:', error)
}
}
/**
* 重启系统
*/
public async restart(): Promise<boolean> {
console.log('重启系统...')
try {
await this.shutdown()
await new Promise((resolve) => setTimeout(resolve, 1000))
return await this.bootstrap()
} catch (error) {
console.error('重启系统失败:', error)
return false
}
}
}
/**
* 导出系统启动器单例实例
*/
export const systemBootstrapper = SystemBootstrapper.getInstance()