springbean循环依赖和生命周期
时间: 2023-08-25 18:14:56 浏览: 93
Spring Bean 循环依赖指的是两个或者多个 Bean 之间相互依赖,形成了一个循环依赖的关系。这种情况下,如果 Spring 容器不加控制地直接注入,就会导致 Bean 的创建失败。
Spring 容器解决 Bean 循环依赖的方法是使用“提前暴露对象”的方式。即将正在创建的 Bean 提前暴露给 Spring 容器,以供其他需要依赖它的 Bean 使用。
Spring Bean 的生命周期包括以下阶段:
1. 实例化:创建 Bean 的实例;
2. 属性赋值:为 Bean 的属性赋值;
3. Aware 接口:调用 Bean 实现 Aware 接口的方法,如 BeanNameAware、BeanFactoryAware、ApplicationContextAware 等;
4. BeanPostProcessor:调用 BeanPostProcessor 的 postProcessBeforeInitialization 方法;
5. 初始化:调用 Bean 的初始化方法,如 init-method;
6. BeanPostProcessor:调用 BeanPostProcessor 的 postProcessAfterInitialization 方法;
7. 销毁:调用 Bean 的销毁方法,如 destroy-method。
在 Spring 容器中,Bean 生命周期的管理是由 BeanFactory 和 ApplicationContext 负责的。其中,ApplicationContext 是 BeanFactory 的子接口,提供了更多的功能,如国际化、事件机制等。
阅读全文