spring

特性:IOC AOP

控制反转.面向切面编程

由spring创建obj.

独特的obj注入方式

执行过程切面管理

{———-}

bean加载方式
AOP

spring cglib代理织入切面方法执行
spring cglib代理织入切面方法执行

spring 容器初始化过程

  • 创建beanFactory 来装配BeanDefinition

    • spring将配置文件解析为BeanDefinition对象、并导入容器bean的定义注册表中(BeanDefinitionRegistry)
      但此时Bean还未初始化、ObtainFreashBeanFactory调用自身的refreshBeanFactory、refreshBeanFactory方法由子类
      AbstractRefreshableApplicationContext实现、该方法返回创建的DefaultListableFactory对象、这个对象就是由ApplicationContext管理的BeanFactory容器对象
  • 加工处理BeanDefinition

    • 调用工厂处理器、根据反射机制从BeanDefinitionRegistry中找出所有BeanFactoryPostPrecessor类型Bean、并调用其PostProcessBeanFactory接口方法、
      经过第一步的DefaultListableFactory反射以实现(BeanFactoryPostProcessor 接口)bean、然后调用这些bean工厂后处理器、对注册表中的BeanDefinition对象进行加工处理、
    • 主要完成工作:bean配置—》beanDefinitionRegistry—》beanDefinition—》property–》注册到spring容器属性编辑器注册表中(propertyEditorRegistry)、
  • 注册Bean后处理器

    • 根据反射机制从BeanDefinitionRegistry中找出所有的BeanPostProcessor类型的Bean并将他们注册到容器Bean后处理器的注册表中
  • 初始化消息资源

    • 初始化容器国际化信息资源
  • 初始化应用上下文事件广播器【观察者模式】

    • AbstractApplicationContext拥有一个applicationEventMnlticastor成员变量、applicationEventMuticastor提供了容器监听的注册表、成为其广播器
      以便将事件监听装入其中
  • 初始化其他特殊bean

  • 注册事件监听器

    • 观察者模式中观察者角色
    • spring根据上下文持有的beanFactory对象找出所有实现ApplicationListener的bean、将BeanDefinition对象生成Bean注册为容器事件监听器
    • 实际操作就是将其添加到事件广播器所提供的监听器事件中
  • 初始化所有sington的bean

    • 创建一个beanFactory实例化所有单实例bean
  • 最后发布上下文刷新事件