Spring Bean 的生命周期涉及多个阶段,从实例化到销毁,在开发中我们可以通过各种接口和注解介入这些阶段来定制化自己的功能。以下是详细的生命周期流程:
1. Bean 的实例化(Instantiation)
- 方式:通过构造函数或工厂方法创建 Bean 的实例。
- 触发条件:容器启动时,根据配置(如
@Component、XML 配置等)创建 Bean。 - 关键点:此时 Bean 的属性尚未注入。
2. 属性赋值(Population of Properties)
- 依赖注入:通过
@Autowired、Setter 方法、XML 配置的<property>等方式注入依赖。 - 处理
@Value:解析并注入外部化配置(如application.properties)。
3. Aware 接口回调
Bean 可以通过实现 Aware 接口获取容器信息:
BeanNameAware:获取 Bean 的名称。BeanFactoryAware:获取BeanFactory实例。ApplicationContextAware:获取ApplicationContext实例。EnvironmentAware:获取环境变量和配置。
public class MyBean implements BeanNameAware {
@Override
public void setBeanName(String name) {
// 获取 Bean 的名称
}
}
4. BeanPostProcessor 的前置处理
- 接口:
BeanPostProcessor.postProcessBeforeInitialization() - 作用:在初始化方法(如
@PostConstruct)之前执行自定义逻辑。 - 典型应用:AOP 代理的生成、监控埋点等。
5. 初始化(Initialization)
初始化逻辑按顺序执行:
@PostConstruct注

最低0.47元/天 解锁文章
1463

被折叠的 条评论
为什么被折叠?



