UNPKG

node-web-mvc

Version:
125 lines (124 loc) 3.86 kB
import { ClazzType } from '../../interface/declare'; import BeanPostProcessor from '../processor/BeanPostProcessor'; import BeanDefinition from './BeanDefinition'; import { BeanFactory } from './BeanFactory'; export declare const isIocRemovedSymbol: unique symbol; export default abstract class AbstractBeanFactory implements BeanFactory { protected readonly id: number; private readonly createChains; constructor(); private readonly beanPostProcessors; private readonly beanInstancesCache; /** * 是否包含指定名称bean定义 * @param key */ abstract containsBeanDefinition(beanName: string): any; /** * 根据bean名称获取对应的定义 * @param beanName bean类型 */ abstract getBeanDefinition(beanName: string): BeanDefinition; /** * 注册一个bean * @param beanName bean名称 * @param beanDefinition bean定义 */ abstract registerBeanDefinition(beanName: string, beanDefinition: BeanDefinition): any; /** * 移除bean定义 */ abstract removeBeanDefinition(beanName: string): BeanDefinition; /** * 获取所有已注册的bean定义key */ abstract getBeanDefinitionNames(): IterableIterator<string>; /** * 判断传入名称的bean是否为单例 * @param key */ isSingleton(key: string): boolean; /** * 判断传入名称的bean是否为原型 * @param key */ isPrototype(key: string): boolean; /** * 指定指定名称的bean构造函数或者类 * @param name */ getType(name: string): ClazzType; /** * 是否包含指定名称的bean * @param key * @returns */ containsBean(key: string): any; /** * 判定指定名称Bean是为beanType参数指定的类型 * @param beanName bean定义名 * @param espectBeanType 预期的bean类型 */ isTypeMatch(beanName: string, beanType: ClazzType): any; /** * 获取指定bean实例 */ getBean<T = any>(name: ClazzType | string): T; getBeansOfType<T extends abstract new () => any>(beanType: T): InstanceType<T>[]; /** * 根据Bean定义创建Bean实例 * @param definition Bean定义 * @returns Bean的实例对象 */ private doGetBean; private createBean; private checkLoopDependencies; private doCreateBean; private createInstance; private createInstanceByMethod; private getProcessors; private resolveBeforeInstantiation; /** * 执行实例化before事件 * @param targetType 当前bean类 * @param beanName 当前bean名称 * @returns 返回预创建创建的实例如果有的话 */ private applyBeanPostProcessorsBeforeInstantiation; /** * 执行实例化after事件 * @param instance 当前bean实例 * @param beanName 当前bean名称 * @returns */ private applyBeanPostProcessorsAfterInstantiation; /** * 执行初始化before事件 * @param instance 当前bean实例 * @param beanName 当前bean名称 * @returns 要导出的bean实例 */ private applyBeanPostProcessorsBeforeInitialization; /** * 执行初始化结束事件 * @param instance 当前bean实例 * @param beanName 当前bean名称 * @returns 要导出的bean实例 */ private applyBeanPostProcessorsAfterInitialization; private applyBeanPostProperties; private populateBean; private invokeAwareMethods; private invokeInitMethods; private initializeBean; /** * 添加一个或多个bean处理器 */ addBeanPostProcessor(...processors: BeanPostProcessor[]): void; removeBeanInstance(definition: BeanDefinition): void; protected debug(...args: any[]): void; /** * 销毁工厂 */ destory(): void; }