更新时间:2023-09-04 来源:黑马程序员 浏览量:
Spring容器管理Bean的生命周期,主要分为以下阶段:
在这个阶段,Spring容器会创建Bean的实例。通常有两种方式来实例化Bean:通过构造函数实例化和通过工厂方法实例化。构造函数实例化是最常见的方式,Spring通过调用Bean的构造函数来创建Bean的实例。
一旦Bean实例化完成,Spring容器会注入Bean的属性,这些属性可以是基本数据类型、引用其他Bean或者集合等。
初始化阶段包括两个步骤:
(1)调用Bean的afterPropertiesSet方法:
如果Bean实现了InitializingBean接口,Spring容器会在属性注入后调用afterPropertiesSet方法,你可以在这个方法中执行一些初始化操作。
(2)执行自定义的初始化方法:
如果在配置中指定了自定义的初始化方法(例如通过XML配置的init-method属性或者注解中的@PostConstruct注解),Spring容器会在afterPropertiesSet方法之后调用这个自定义的初始化方法。
一旦初始化阶段完成,Bean就处于可用状态,可以被其他Bean引用和使用。
Bean的销毁阶段也包括两个步骤:
(1)调用Bean的destroy方法:如果Bean实现了DisposableBean接口,Spring容器会在Bean被销毁之前调用destroy方法,你可以在这个方法中执行一些清理操作。
(2)执行自定义的销毁方法:如果在配置中指定了自定义的销毁方法(例如通过XML配置的destroy-method属性或者注解中的@PreDestroy注解),Spring容器会在destroy方法之后调用这个自定义的销毁方法。
最后,Spring容器会销毁Bean实例,释放资源,使其不再可用。
需要注意的是,Bean的生命周期管理由Spring容器负责,开发者可以通过配置来影响Bean的生命周期,例如定义初始化方法、销毁方法,以及设置Bean的作用域等。默认情况下,Bean的作用域是单例(Singleton),也就是一个容器中只有一个Bean实例,但可以根据需要将作用域配置为原型(Prototype)或其他自定义作用域。