什么是生命周期呢?
当前组件在创建到销毁经历的一系列过程,称之为生命周期
生命周期的分为几个阶段?每个阶段有哪些钩子函数?
生命周期分为3个阶段,这三个阶段分别是: 初始化 、 运行中 、 销毁
Spring Bean的生命周期:
通过一张图表示
1、通过XML、Java annotation(注解)以及Java Configuration(配置类)
等方式加载Spring Bean
2、BeanDefinitionReader:解析Bean的定义。在Spring容器启动过程中,
会将Bean解析成Spring内部的BeanDefinition结构;
例如:
将
中的
标签转换成BeanDefinition结构
3、BeanDefinition:包含了很多属性和方法。例如:id、class(类名)、
scope、ref(依赖的bean)等等。其实就是将bean(例如
存储到这个对应BeanDefinition相应的属性中
例如:
4、BeanFactoryPostProcessor:是Spring容器功能的扩展接口。
注意:
1)BeanFactoryPostProcessor在spring容器加载完BeanDefinition之后,
在bean实例化之前执行的
2)对bean元数据(BeanDefinition)进行加工处理,也就是BeanDefinition
属性填充、修改等操作
5、BeanFactory:bean工厂。它按照我们的要求生产我们需要的各种各样的bean。
例如:
BeanFactory -> List(循环多个bean)
BeanDefinition(id/class/scope/init-method)
foreach(BeanDefinition bean : List){
//根据class属性反射机制实例化对象
//反射赋值设置属性
}
6、Aware感知接口:在实际开发中,经常需要用到Spring容器本身的功能资源
例如:BeanNameAware、ApplicationContextAware等等
BeanDefinition 实现了 BeanNameAware、ApplicationContextAware就进行处理
否则就不就行处理跳过当前环节
7、BeanPostProcessor:后置处理器。在Bean对象实例化和引入注入完毕后,
在显示调用初始化方法的前后添加自定义的逻辑。(类似于AOP的绕环通知)
前提条件:如果检测到Bean对象实现了BeanPostProcessor后置处理器才就会先执行
Before 方法
随后调用初始化Bean(InitializingBean和init-method,Bean的初始化才算完成)
再调用After方法
否则直接初始化Bean
到这就完成了Bean的创建工作
8、destory:销毁
以上的这些都是完成这个动作
Spring的IOC和AOP:
//初始化Spring上下文容器(IOC)
ApplicationContext ac=
new ClassXmlPathApplicationContext("spring.xml");
Spring Bean的生命周期分为四个阶段和多个扩展点。扩展点又可以分为影响多个Bean和影响单个Bean。整理如下:
四个阶段
实例化 Instantiation属性赋值 Populate初始化 Initialization销毁 Destruction



