SpringBean生命周期详解
一、简述:
Spring是我们每天都在使用的框架,Bean是被Spring管理的Java对象,是Spring框架最重要的部分之一,那么让我们一起了解一下Spring中Bean的生命周期是怎样的吧
二、流程图
总体分为四个阶段:
①实例化 CreateBeanInstance
②属性赋值 PopulateBean
③初始化 Initialization
④销毁 Destruction**
其中多个增强接口贯穿了这四个阶段!
三、SpringBean生命周期中的增强接口PostProcessor:
在上图里有多种后置处理器接口,它们贯穿了Bean的生命周期,且它们的实现类都会在SpringIOC容器进行初始化的时候进行实例化,让我们来做一个区分:
解释:
Bean的实例化:
是指Spring通过反射获取Bean的构造方法进行实例化的过程
Bean的初始化:
是指Bean的属性赋值、执行初始化方法(init-method)的过程
四、实例展示
SpringBeanDemo
package com.rx.spring;
import com.rx.spring.domain.Person;
import com.rx.spring.domain.Student;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class SpringBeanDemo {
public static void main(String[] args) throws Exception {
System.out.println("****开始启动****");
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);
System.out.println("****启动完毕****");
Person person = applicationContext.getBean("person", Person.class);
Student student = applicationContext.getBean("student", Student.class);
System.out.println("=============================================");
System.out.println("person:" + person);
System.out.println("student:" + student);
person.destroy();
System.out.println("============现在开始关闭容器======================");
applicationContext.registerShutdownHook();
}
}
Config
package com.rx.spring;
import org.springframework.context.annotation.*;
@Configuration
@ComponentScan("com.rx.spring")
@ImportResource("classpath:spring.xml")
public class Config {
}
Person
package com.rx.spring.domain;
import lombok