SpringBean生命周期分为四个阶段
- 实例化(Instantiation)
- 属性赋值(Populate)
- 初始化(Initialization)
- 销毁(Destruction)
一.对象的实例化
实例化对象:调用类的无参构造方法通过反射实例化(默认)
public Car() {
System.out.println("=====>进入car的无参方法");
}
二.属性赋值set
属性赋值
public void setCname(String cname) {
System.out.println( "属性赋值");
this.cname = cname;
}
三.初始化
3.1通过接口实现初始化-InitializingBean
// 通过接口实现初始化-实现InitializingBean接口
public void afterPropertiesSet() throws Exception {
System.out.println("通过接口初始化");
}
3.2通过init-method属性初始化
public void doinit(){
System.out.println("通过属性初始化");
}
四.操作使用
五.销毁,销毁前执行destory-method属性指定的方法
public void dodestory(){
System.out.println("通过属性销毁了");
}
补充:
Aware接口
Spring 检测到 bean 实现了 Aware 接口,则会为其注入相应的依赖,能在 bean 中获得相应的 Spring 容器资源。
Spring 中提供的 Aware 接口有:
- BeanNameAware:会调用setBeanName(String beanId)方法,注入Bean的名字
- BeanClassLoaderAware:会调用setBeanClassLoader()方法,注入ClassLoader对象的实例
- BeanFactoryAware:会调用setBeanFactory()方法,注入spring工厂
- ApplicationContextAware:会调用setApplicationContext()方法,注入spring上下文
BeanPostProcessor
执行BeanPostProcessor前置处理:让Bean实现了BeanPostProcessor接口,调用Object postProcessAfterInitialization(Object bean, String s)方法
整个过程代码如下: