1. bean创建过程(bean的生命周期)
      1. 解析配置文件来创建 beanDefinition
        1. 在解析的时候会进行扩展,根据不同的配置文件进行扩展类进行解析(BeanDefinitionReader)

      2. 根据BeanDefinition 通过反射思想实例化出一个空对象
      3. 对创建的对象进行属性设置
      4. 设置Aware 接口的属性
      5. BeanPostProcessor:before
      6. 执行 init-method 方法进行初始化
      7. BeanPostProcessor:after
      8. 创建出一个完整的对象的放入到bean容器中
    2. PostProcessor 后置处理器,增强器

      BeanPostProcessor: 增强beanDefinition 信息
      BeanFactroyPostProcessor: 增强 bean 信息

    3. 实例化 和初始化

      实例化:在堆中开辟一块空间,对象的属性值都是默认值
      初始化: 给属性设值

      1. 填充属性
      2. 执行初始化方法 ——-init- method
    4. aware 接口
      1. aware 会有很多实现类,里面有对类的一下扩展使用,获取Spring中低层信息。 当容器创建的bean对象在进行具体操作的时候,如果需要容器的其他对象。此时将对象实现Aware接口,来满足当前的需要
    5. Spring bean 类型
      1. single: 单例创建,默认都是单例对象,创建完后放入到缓存中
      2. 多: 每次使用进行对象创建,不是在初始化项目的时候创建对象,创建完对象也不会放入到缓存中,使用完就释放
      3. session
      4. request
    6. Spring中的核心类
      1. IOC核心类
        1. BeanFactory
        2. BeanDefinition
        3. ApplicationContext
      2. AOP核心类
        1. AbstractAutoProxyCreator
        2. ProxyFactory
        3. AopProxy
    7. Spring bean
      1. 普通对象:我们自定义需要的对象
      2. 容器对象: 内置对象,Spring需要的对象
    8. beanFactory 和 factroyBean

      1. 都是用来创建对象的,当使用BeanFactory的时候必须遵循完整的创建过程,这个过程是由Spring来管理控制的。
      2. 而使用FactoryBean 只需要用getObject 就可以返回具体的对象,整个对象的创建过程是由用户自己来控制的,更加灵活。
      3. BeanFactory 和FactoryBean 创建的对象都是由Spring 来管理的,BeanFactory创建的对象会放入一级缓存中,但是FactoryBean创建的对象不会放入到一级缓存中,而是放入到 FactoryBeanObjectCache的缓存中。