所有分类
  • 所有分类
  • 未分类

Spring-Bean生命周期-流程/原理

简介

本文介绍Spring中Bean的生命周期。

BeanFactory中Bean的生命周期

生命周期流程图

流程描述

  1. 应用启动的时候检查需要被Spring管理的bean;
  2. 实例化、设置属性值
  3. 根据实现的接口,依次设置beanName,BeanFactory。
  4. 根据实现的接口,依次调用初始化前方法(@PostConstruct指定的方法),自定义初始化方法(@Bean(initMethod = “xxx”)的xxx方法),初始化后方法(BeanPostProcesser的postProcessAfterlnitialization)。
  5. bean已经可以用了,存活直到上下文也被销毁。
  6. 销毁的时候调用destroy方法和自定义的销毁方法。

ApplicationContext中Bean的生命周期

基本和BeanFactory中Bean的生命周期一致,区别在于:ApplicationContext中的Bean在BeanFactoryAware#setBeanFactory()和BeanPostProcessor#postProcessBeforeInitialization()中间多了一步:调用ApplicationContextAware#setApplicationContextAware() ​

4

评论2

请先

  1. SpringBean的生命周期大致上分为五个阶段: 创建前准备:Bean在开始加载之前要从上下文和一些配置中去解析并且查找Bean有关扩展的实现,比如像‘init-method’,容器在初始化Bean的时候或调用的一个方法,destroy-method,容器在销毁Bean的时候会调用的一些方法,以及BeanFactoryPostProcessor这一类的Bean加载过程中的一些前置和后置的一些处理扩展实现,这些类和配置其实是Springr提供给开发者用来去实现Bean加载过程中的一些扩展,在很多和Spring集成的中间件也比较常见,比如Dubbo,这样一些中间件。 创建实例化:这个阶段主要作用是通过反射去创建Bean的实例对象,并且会扫描和解析Bean声明的一些属性 依赖注入:如果被实例化的Bean存在依赖其他Bean对象的一些情况,则需要对这些依赖的Bean进行对象注入,比如常见的@Autowired,以及setter注入等这样一些配置形式,同时在这个阶段会触发一些扩展的调用,比如说常见的扩展类BeanPOSTProcessors用来去实现Bean初始化前后的扩展回调,以及像BeanFactoryAware等等 容器缓存:主要是把Bean保存到容器以及Spring缓存中,到这个阶段的Bean就可以被开发者使用了,这个阶段涉及到的操作像init-method这个属性配置一些方法或者这个阶段会被调用,以及像BeanPOSTProcessors的后置处理器方法也会在这个阶段被触发 销毁实例:当Spring的应用上下文被关闭的时候,那么这个上下文中所有的Bean会被销毁,如果存在了Bean存在了DisposableBean接口或者配置了destroy-method属性的一些方法会在这个阶段被调用
    summerzZ 2024-06-21 0
  2. bean 定义:在配置文件里面用来进行定义。bean 初始化:有两种方式初始化:\n\n在配置文件中通过指定 init-method 属性来完成\n实现 org.springframwork.beans.factory.InitializingBean 接口 bean 调用:有三种方式可以得到 bean 实例,并进行调用 bean 销毁:销毁有两种方式\n\n使用配置文件指定的 destroy-method 属性\n实现 org.springframwork.bean.factory.DisposeableBean 接口
    华山栈道008 2024-01-09 0
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录