Skip to main content

Spring中Bean的生命周期

·64 words·1 min
glasscat
Author
glasscat
hi!
Table of Contents

本文将对比着原生Java,帮助透彻的理解spring Bean的生命周期。

Spring bean的生命周期大致可以分为四个阶段:

  1. 创建

  2. 依赖注入

  3. 初始化

  4. 销毁

这四个阶段是spring框架内的,下面将对比这理解他们在原生Java中的阶段。

创建(实例化)
#

原生Java:就是对象的实例化,主要是通过构造器方法进行实例化。

MyBean myBean = new MyBean(); // 这是原生Java中的对象创建

spring框架中:Spring容器通过反射调用类的构造函数来创建Bean的实例。

依赖注入
#

原生Java:通过setDependency方法,或者obj.feild = xxx直接赋值的方式,给字段进行赋值,也就是注入依赖。

MyBean myBean = new MyBean();
myBean.setDependency(new Dependency()); // 通过Setter方法注入依赖

spring框架中:Spring容器根据配置或注解,将依赖的Bean注入到目标Bean中。这可以通过@Autowired@Resource@Inject等注解,或者通过XML配置中的<property>标签来实现。

初始化
#

原生Java:Java对象实例化后,调用init之类的方法,进行初始化。

MyBean myBean = new MyBean();
myBean.init(); // 手动调用初始化方法

spring框架中:Spring提供了InitializingBean接口、@PostConstruct注解或init-methodXML配置,让Bean可以声明自己想要执行的方法,底层仍然是调用了方法。

销毁
#

原生Java:Java对象任务完成后,调用closedestory方法来进行资源释放之类的工作。

MyBean myBean = new MyBean();
myBean.destroy(); // 手动调用销毁方法
//额外的提示Java中所有对象的真正销毁和回收都是由GC来决定的 强烈不建议自己调用final方法...

spring框架:Spring提供了DisposableBean接口、@PreDestroy注解或destroy-methodXML配置,底层仍然是调用一个销毁方法。

小结
#

可以看到由Spring框架管理的Bean可以自动化的实现这些工作,降低了耦合与重复性的代码。