node-web-mvc
Version:
node spring mvc
125 lines (124 loc) • 3.86 kB
TypeScript
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;
}