文章目录
- 一、Spring(Bean)执行流程
- 二、Bean生命周期
- Bean的生命周期演示
- 总结
一、Spring(Bean)执行流程
- 启动容器(启动项目)
- 读取配置文件(初始化)
a) 使用xml注册bean
b) 配置bean根(扫描)路径 - 将
bean存储到Spring中(存操作): 通过类注解进行扫描和装配 - 将
bean从Spring读取出来(取操作),装配到相应的类

二、Bean生命周期
所谓的生命周期指的是一个对象从诞生到销毁的整个生命过程,我们把这个过程就叫做一个对象的生命周期。
- 实例化(对应
JVM中的"加载"),从无到有,将字节码转换成内存中的对象,只是分配了内存 ex: 买了一套毛坯房 - 设置属性(属性有可能是外部资源需要调用
Spring里面的对象进行注入的,所以需要先将外部资源注入进来,才能进行初始化操作),就是Bean注入和装配 ex: 购买装修材料(引入外部资源) Bean初始化 ex: 房子装修- 各种通知: 实现了各种
Aware通知的方法,BeanNameAware、BeanFactoryAware、ApplicationContextAware的接口方法 ex:打电话给各个装修的师傅来施工(水工、电工、瓦工) - 执行
BeanPostProcessor初始化前置方法 ex: 师傅到达现场,先勘察环境,指定装修方案(前置工作) - 执行
@PostConstruct初始化方法,依赖注入操作之后被执行,使用这个注解就是执行当前类的初始化方法 ex: 两类师傅进行装修,技术好的,技术一般 - 执行自己指定的
init-method方法(如果有指定的话),跟上面一条一样,都是执行初始化方法,init-method方法是xml时代的方法 - 执行
BeanPostProcess初始化后置方法 ex: 装修之后的清理工作
- 各种通知: 实现了各种
- 使用
Beanex : 入住房子 - 销毁
Beanex: 卖掉房子
Bean的生命周期演示

public class BeanLifeComponent implements BeanNameAware {
public void setBeanName(String s) {
System.out.println("执行通知");
}
public void postConstruct() {
System.out.println("执行了PostConstruct初始化方法");
}
public void init() {
System.out.println("执行了 init-method 初始化方法");
}
public void preDestory() {
System.out.println("执行了PreDestroy销毁方法");
}
}
执行Demo:
public class Demo3 {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
BeanLifeComponent beanLifeComponent = applicationContext.getBean("beanLifeComponent",BeanLifeComponent.class);
System.out.println("使用Bean");
//销毁Bean
applicationContext.destroy();
}
}


总结




















