import { IComponent } from "../type/interface" import {ContextConfigType, PojoType} from "../type/type" import AspectBuilder from "./AspectBuilder" import ComponentBuilder from "./ComponentBuilder" import DecorateRegistCenter from "./DecorateRegistCenter" import FileScanner from "./FileScanner" import express from 'express' import InstanceBuilder from "./instance/InstanceBuilder" export default class ContextContainer{ private static server: express.Express private static resources: Map = new Map() private componentBuilder: ComponentBuilder private instanceBuilder: InstanceBuilder public static config: ContextConfigType constructor(config: ContextConfigType = {}, handler: Function){ ContextContainer.config = config this.componentBuilder = new ComponentBuilder() this.instanceBuilder = new InstanceBuilder() this.init(handler) } private createServer(handler: Function): void{ const server: express.Express = express() handler && handler(server) ContextContainer.server = server } public init(handler: Function): void{ this.createServer(handler) this.componentBuilder.build() this.instanceBuilder.build() } public start(port: number): void{ ContextContainer.server.listen(port, () => { console.log('服务启动在端口:', port) }) } public static getServer(): express.Express{ return ContextContainer.server } public static setResource(name: string, resource: any): void{ ContextContainer.resources.set(name, resource) } public static getResource(name: string): any{ return name ? ContextContainer.resources.get(name) : null } }