@ticatec/node-common-library
Version:
A comprehensive Node.js database access framework providing robust abstractions for database connection management, SQL execution, transaction handling, pagination, and dynamic query building.
65 lines • 2.36 kB
JavaScript
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _BeanFactory_map;
Object.defineProperty(exports, "__esModule", { value: true });
const Scope_1 = require("./Scope");
class BeanFactory {
constructor() {
_BeanFactory_map.set(this, new Map());
}
/**
* 注册一个Bean创建器
* @param name - Bean的名称
* @param beanClass - Bean类的构造函数
* @param scope - Bean的作用域,默认为单例模式
*/
register(name, beanClass, scope = Scope_1.Scope.Singleton) {
__classPrivateFieldGet(this, _BeanFactory_map, "f").set(name, { beanClass, scope });
}
/**
* 获取Bean实例,根据作用域返回单例或新实例
* @param name - Bean的名称
* @returns Bean实例对象
*/
getInstance(name) {
let item = __classPrivateFieldGet(this, _BeanFactory_map, "f").get(name);
if (item != null) {
if (item.scope == Scope_1.Scope.Prototype) {
return new item.beanClass();
}
else {
if (item.beanInstance == null) {
item.beanInstance = new item.beanClass();
}
}
return item.beanInstance;
}
}
/**
* 创建Bean实例(getInstance方法的别名)
* @param name - Bean的名称
* @returns Bean实例对象
*/
createInstance(name) {
return this.getInstance(name);
}
/**
* 创建Bean实例(getInstance方法的别名)
* @param name - Bean的名称
* @returns Bean实例对象
*/
createBean(name) {
return this.getInstance(name);
}
}
_BeanFactory_map = new WeakMap();
if (!global.beanFactoryInstance) {
global.beanFactoryInstance = new BeanFactory();
}
let beanFactory = global.beanFactoryInstance;
exports.default = beanFactory;
//# sourceMappingURL=BeanFactory.js.map
;