UNPKG

@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
"use strict"; 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