一、Spring 容器中的 Bean 的完整生命周期
- bean对象的实例化
- 封装属性,也就是设置properties中的属性值
- 如果bean实现了BeanNameAware,则执行setBeanName方法,也就是bean中的id值
- 如果实现BeanFactoryAware或者ApplicationContextAware ,需要设置setBeanFactory或者上下文对象setApplicationContext
- 如果存在类实现BeanPostProcessor后处理bean,执行postProcessBeforeInitialization,可以在初始化之前执行一些方法
- 如果bean实现了InitializingBean,则执行afterPropertiesSet,执行属性设置之后的操作
- 调用执行指定的初始化方法
- 如果存在类实现BeanPostProcessor则执行postProcessAfterInitialization,执行初始化之后的操作
- 执行自身的业务方法
- 如果bean实现了DisposableBean,则执行spring的的销毁方法
- 调用执行自定义的销毁方法。
public class Man implements BeanNameAware, ApplicationContextAware, InitializingBean, DisposableBean {
private String name;
public Man() {
System.out.println("第一步:实例化类");