后端经典面试题合集, 讲一讲 Spring 框架中 Bean 的生命周期?
后端经典面试题合集, 讲一讲 Spring 框架中 Bean 的生命周期?
QA
Step 1
Q:: 讲一讲 Spring 框架中 Bean 的生命周期?
A:: Spring Bean 的生命周期包括以下几个主要阶段:
1.
实例化:Spring 容器通过反射机制创建 Bean 的实例。
2.
属性注入:Spring 使用依赖注入(DI)将必要的属性和依赖注入到 Bean 中。
3.
初始化:在 Bean 属性注入完成后,如果 Bean 实现了 InitializingBean
接口,Spring 将调用其 afterPropertiesSet()
方法。如果配置了 init-
method,Spring 也会执行相应的方法。
4.
使用阶段:Bean 被 Spring 容器管理,可以被客户端代码调用使用。
5.
销毁:当容器关闭时,Spring 会执行销毁阶段。如果 Bean 实现了 DisposableBean
接口,Spring 会调用其 destroy()
方法。配置的 destroy-
method 也会被执行。
Bean 的生命周期管理是 Spring IOC 的核心之一,通过这些机制可以更好地管理对象的创建、初始化、使用和销毁。
Step 2
Q:: Spring 中 Bean 的作用域有哪些?
A:: Spring 中 Bean 的作用域有以下几种:
1.
singleton:默认作用域,Spring 容器中只存在一个 Bean 实例,所有对该 Bean 的请求都返回相同的实例。
2.
prototype:每次请求都会创建一个新的 Bean 实例。
3.
request:每次 HTTP 请求会创建一个新的 Bean 实例,仅在 Web 应用中使用。
4.
session:在 HTTP session 中,每个 session 都会创建一个新的 Bean 实例,仅在 Web 应用中使用。
5. **global-
session**:用于 Portlet 应用,每个全局 session 会创建一个 Bean 实例。
Step 3
Q:: 如何自定义 Spring Bean 的生命周期方法?
A:: 可以通过以下几种方式自定义 Bean 的生命周期方法:
1.
实现 InitializingBean
和 DisposableBean
接口:分别实现 afterPropertiesSet()
和 destroy()
方法。
2.
使用 @PostConstruct
和 @PreDestroy
注解:在对应的方法上使用这些注解来标记初始化和销毁方法。
3. **在配置文件中指定 init-method 和 destroy-
method**:在 XML 配置或注解配置中,通过 init-method
和 destroy-method
属性指定方法。