特性:IOC AOP
控制反转.面向切面编程
由spring创建obj.
独特的obj注入方式
执行过程切面管理
{———-}
bean加载方式
spring cglib代理织入切面方法执行
spring 容器初始化过程
创建beanFactory 来装配BeanDefinition
- spring将配置文件解析为BeanDefinition对象、并导入容器bean的定义注册表中(BeanDefinitionRegistry)
但此时Bean还未初始化、ObtainFreashBeanFactory调用自身的refreshBeanFactory、refreshBeanFactory方法由子类
AbstractRefreshableApplicationContext实现、该方法返回创建的DefaultListableFactory对象、这个对象就是由ApplicationContext管理的BeanFactory容器对象
- spring将配置文件解析为BeanDefinition对象、并导入容器bean的定义注册表中(BeanDefinitionRegistry)
加工处理BeanDefinition
- 调用工厂处理器、根据反射机制从BeanDefinitionRegistry中找出所有BeanFactoryPostPrecessor类型Bean、并调用其PostProcessBeanFactory接口方法、
经过第一步的DefaultListableFactory反射以实现(BeanFactoryPostProcessor 接口)bean、然后调用这些bean工厂后处理器、对注册表中的BeanDefinition对象进行加工处理、 - 主要完成工作:bean配置—》beanDefinitionRegistry—》beanDefinition—》property–》注册到spring容器属性编辑器注册表中(propertyEditorRegistry)、
- 调用工厂处理器、根据反射机制从BeanDefinitionRegistry中找出所有BeanFactoryPostPrecessor类型Bean、并调用其PostProcessBeanFactory接口方法、
注册Bean后处理器
- 根据反射机制从BeanDefinitionRegistry中找出所有的BeanPostProcessor类型的Bean并将他们注册到容器Bean后处理器的注册表中
初始化消息资源
- 初始化容器国际化信息资源
初始化应用上下文事件广播器【观察者模式】
- AbstractApplicationContext拥有一个applicationEventMnlticastor成员变量、applicationEventMuticastor提供了容器监听的注册表、成为其广播器
以便将事件监听装入其中
- AbstractApplicationContext拥有一个applicationEventMnlticastor成员变量、applicationEventMuticastor提供了容器监听的注册表、成为其广播器
初始化其他特殊bean
注册事件监听器
- 观察者模式中观察者角色
- spring根据上下文持有的beanFactory对象找出所有实现ApplicationListener的bean、将BeanDefinition对象生成Bean注册为容器事件监听器
- 实际操作就是将其添加到事件广播器所提供的监听器事件中
初始化所有sington的bean
- 创建一个beanFactory实例化所有单实例bean
最后发布上下文刷新事件