【175、spring 的 bean 是什么时候初始化?】

379 阅读2分钟

在Spring容器启动时,会对所有的Bean进行实例化,包括Bean的依赖关系以及依赖的Bean。Bean的实例化是通过调用其默认的构造函数或者是通过工厂方法实现的。实例化后的Bean对象将被放入BeanFactory中管理。

Bean的初始化过程包括两个步骤:Bean的属性设置和Bean的生命周期回调方法的执行。在Bean的属性设置过程中,Spring容器会将Bean的属性值(如基本类型、引用类型)注入到Bean实例中。这个过程可以通过XML配置文件、Java注解等方式进行定义和配置。

在Bean属性设置完成后,Spring容器会检查Bean实例是否实现了InitializingBean接口,如果实现了,就会调用其afterPropertiesSet()方法完成Bean的初始化。如果没有实现InitializingBean接口,Spring容器会检查Bean定义中是否指定了init-method属性,如果指定了,就会调用指定的方法完成Bean的初始化。

在Bean的使用过程中,Spring容器会根据需要对Bean进行单例或者多例的管理。对于单例的Bean,Spring容器会在第一次获取该Bean实例时进行实例化和初始化,之后每次获取都是返回同一个实例。对于多例的Bean,每次获取都会创建新的实例并进行初始化。

在Spring容器关闭时,会对所有的Bean进行销毁操作。对于单例的Bean,销毁操作会在容器关闭时执行;对于多例的Bean,销毁操作则由使用者负责。销毁操作的具体实现可以通过实现DisposableBean接口或者指定destroy-method属性来完成。