2025-02-25 11:57:54 +08:00
|
|
|
import Logger from "./Logger";
|
|
|
|
|
2025-02-23 02:11:17 +08:00
|
|
|
class BeanFactory {
|
|
|
|
private static _beans: Map<string, any> = new Map<string, any>();
|
|
|
|
|
2025-02-25 11:57:54 +08:00
|
|
|
static registerBean(clazz: Function, beanName?: string): void {
|
|
|
|
if (!beanName) {
|
|
|
|
beanName = this.getBeanName(clazz.name);
|
|
|
|
}
|
|
|
|
if (this.hasBean(beanName)) {
|
|
|
|
return;
|
2025-02-23 02:11:17 +08:00
|
|
|
}
|
2025-02-25 11:57:54 +08:00
|
|
|
const instance = new (clazz as any)();
|
|
|
|
this._beans.set(beanName, instance);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static setBean<T>(name: string, bean: T): void {
|
|
|
|
this._beans.set(name, bean);
|
2025-02-25 12:32:48 +08:00
|
|
|
Logger.info(
|
|
|
|
`${this.name}.${arguments[0]}`,
|
|
|
|
`register bean ${name} ${bean}`
|
|
|
|
);
|
|
|
|
// Logger.info(`register bean ${name} ${bean}`);
|
2025-02-23 02:11:17 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
public static getBean<T>(name: string): T {
|
|
|
|
return this._beans.get(name);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static hasBean(name: string): boolean {
|
|
|
|
return this._beans.has(name);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static clear(): void {
|
|
|
|
this._beans.clear();
|
|
|
|
}
|
2025-02-25 11:57:54 +08:00
|
|
|
|
|
|
|
public static getBeanName(className: string) {
|
|
|
|
return className.charAt(0).toLowerCase() + className.slice(1);
|
|
|
|
}
|
2025-02-23 02:11:17 +08:00
|
|
|
}
|
|
|
|
|
2025-02-25 11:57:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-02-23 02:11:17 +08:00
|
|
|
export default BeanFactory;
|