spring bean简单实现

48 阅读1分钟

spring 中bean的简单实现捏 测试类,先创建bean工厂,bean的定义(传入bean类型),注册bean。

测试:用getbean获取bean对象。调用bean方法查看是否打印

注册bean在bean工厂的实现类(DefaultListableBeanFactory)中用map作为bean容器,String作为键,BeanDefinition作为值(成员是bean的类型),注册时直接推进map中。

getbean去调用dogetbean(真正的实现在dogetbean,分开是为了重构函数)。

去获取单例bean,(此时返回为null)如果有,则直接返回。

没有则去取BeanDcefintion

(如果注册过则有beanDcefintion,否则没有)

这时候去带着beanDefintion去创建bean

在createBeanInstance中选择创建策略(根据构造函数的参数去创建)

在createBeanInstance中寻找合适的构造函数,然后进行创建。

Constructor[]中包含bean的所有构造方法。然后便利构造方法找到匹配的(这里简单地根据长度匹配)

找到传给其他函数后初始化。

用cglib进行创建。

之后返回到函数中,将其添加到单例容器中。并返回bean对象