springIOC学习

4个基本接口:

1、BeanFactory:基本创建Bean的接口

2、BeanDefinition:基本定义Bean的接口;所有的Bean定义都被转化为这一统一的抽象模型(描述了bean是否是单例,bean的依赖关系等等)

3、BeanDefinitionReader:这个不是必须接口,只是建议读取bean定义时实现的接口。(如果能正确的读取到bean的定义,则不实现该接口也是允许的);将外部资源对象描述的Bean定义统一转化为统一的内部数据结构BeanDefinition。

4、Resource:定义bean的资源接口

 

过程:Resource定义好各个bean;BeanDefinitionReader将Resource读取解析,转化为BeanDefinition,并将其装载;BeanDefinitionRegistry将装载过的BeanDefinition读取出来,将其注册到BeanFactory;BeanFactory根据注册的BeanDefinition创建Bean实例,如果是单例,则从缓存中去(如果缓存没有,则新建一个然后缓存),如果不是,则新建一个实例。

 

下面是引用一个网友的分析:

spring通过定位资源-->解析bean定义文件并缓存bean定义信息-->根据bean定义造bean实例-->如果是单例模式则把这个bean放进缓存管理,否则直接造对象-->如果有依赖关系,则反射目标bean的方法(setter方法/构造方法/普通方法)并将其依赖的bean做为参数传入,完成注入-->至此,IOC容器就建立起来了

你可能感兴趣的:(spring)