- bean创建过程(bean的生命周期)
- 解析配置文件来创建 beanDefinition
- 在解析的时候会进行扩展,根据不同的配置文件进行扩展类进行解析(BeanDefinitionReader)
- 根据BeanDefinition 通过反射思想实例化出一个空对象
- 对创建的对象进行属性设置
- 设置Aware 接口的属性
- BeanPostProcessor:before
- 执行 init-method 方法进行初始化
- BeanPostProcessor:after
- 创建出一个完整的对象的放入到bean容器中
- 解析配置文件来创建 beanDefinition
PostProcessor 后置处理器,增强器
BeanPostProcessor: 增强beanDefinition 信息
BeanFactroyPostProcessor: 增强 bean 信息实例化 和初始化
实例化:在堆中开辟一块空间,对象的属性值都是默认值
初始化: 给属性设值- 填充属性
- 执行初始化方法 ——-init- method
- aware 接口
- aware 会有很多实现类,里面有对类的一下扩展使用,获取Spring中低层信息。 当容器创建的bean对象在进行具体操作的时候,如果需要容器的其他对象。此时将对象实现Aware接口,来满足当前的需要
- Spring bean 类型
- single: 单例创建,默认都是单例对象,创建完后放入到缓存中
- 多: 每次使用进行对象创建,不是在初始化项目的时候创建对象,创建完对象也不会放入到缓存中,使用完就释放
- session
- request
- Spring中的核心类
- IOC核心类
- BeanFactory
- BeanDefinition
- ApplicationContext
- AOP核心类
- AbstractAutoProxyCreator
- ProxyFactory
- AopProxy
- IOC核心类
- Spring bean
- 普通对象:我们自定义需要的对象
- 容器对象: 内置对象,Spring需要的对象
beanFactory 和 factroyBean
- 都是用来创建对象的,当使用BeanFactory的时候必须遵循完整的创建过程,这个过程是由Spring来管理控制的。
- 而使用FactoryBean 只需要用getObject 就可以返回具体的对象,整个对象的创建过程是由用户自己来控制的,更加灵活。
- BeanFactory 和FactoryBean 创建的对象都是由Spring 来管理的,BeanFactory创建的对象会放入一级缓存中,但是FactoryBean创建的对象不会放入到一级缓存中,而是放入到 FactoryBeanObjectCache的缓存中。