您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Spring Bean的完整生命周期是怎样的
Spring框架的核心功能之一是通过IoC容器管理Bean的生命周期。理解Bean的完整生命周期对于掌握Spring的运作机制至关重要。以下是Spring Bean从创建到销毁的完整过程:
## 1. 实例化(Instantiation)
容器通过构造函数或工厂方法创建Bean实例。此时对象处于"原始状态",属性未被注入。
## 2. 属性赋值(Population)
通过Setter方法或字段注入(@Autowired)完成依赖注入。XML配置的`<property>`和注解驱动的注入都在此阶段处理。
## 3. Aware接口回调
如果Bean实现了各种Aware接口(如`BeanNameAware`、`BeanFactoryAware`等),容器会调用对应方法注入上下文信息。
## 4. 前置初始化(BeanPostProcessor前置处理)
所有`BeanPostProcessor`的`postProcessBeforeInitialization()`方法被调用,允许对Bean进行修改。
## 5. 初始化(Initialization)
- 如果实现了`InitializingBean`接口,会调用`afterPropertiesSet()`方法
- 执行通过`@PostConstruct`注解或XML配置的`init-method`指定的自定义初始化方法
## 6. 后置初始化(BeanPostProcessor后置处理)
`BeanPostProcessor`的`postProcessAfterInitialization()`方法被调用,可以返回代理对象(如AOP代理就是在此阶段生成)。
## 7. 使用期(In Use)
Bean完全初始化,可以被应用程序正常使用。对于单例Bean,会一直存在于容器中;原型(prototype)Bean每次请求都会创建新实例。
## 8. 销毁(Destruction)
当容器关闭时:
- 首先调用`@PreDestroy`注解方法
- 然后执行`DisposableBean`接口的`destroy()`方法
- 最后调用XML配置的`destroy-method`指定方法
## 特殊生命周期接口
- `BeanFactoryPostProcessor`:影响容器本身的配置
- `FactoryBean`:自定义复杂对象的创建逻辑
- `SmartInitializingSingleton`:所有单例初始化完成后回调
理解这个生命周期可以帮助开发者:
- 合理选择初始化/销毁的执行方式
- 正确处理依赖注入顺序问题
- 实现更精细化的Bean管理
(全文约500字,采用Markdown格式,包含层级标题和关键点说明)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。