SpringBean的生命周期
创始人
2024-06-03 12:57:00

SpringBean的生命周期

1 启动spring容器,就是创建beanFactory工厂,就是applicationcontext,通过applicationcontext加载配置文件,或者利用注解将bean加载到spring容器里面
2 加载之后,spring容器会对这些bean进行封装,封装成beandefinition对象,就是普通的java对象上再封装一层,赋予spring框架需要用到的属性,比如是否单例,是否懒加载
3 将这些beandefinition对象以kye为beanname,值为beandefinition对象的形式存入到map里面,将这个map传入到spring beanfactory去进行springbean的实例化
4 传入到spring beanfactory之后,利用beanfactoryPostProcessor接口去对beandefinition对象进行一些修改
5 开始循环beandefinition对springbean的实例化,就是执行bean的构造方法(单例bean放入单例池,但是此刻还未初始化),
在执行实例化的前后,可以通过instantiationAwareBeanPostProcessor扩展点对bean进行修改
6 springbean实例化之后,就开始注入属性,比如标注@autoware的属性,再调用各种aware接口扩展方法,注入属性,比如beanaNameAware.setName,设置bean的id或者name
7 初始化bean,对各项属性赋值,初始化前后执行beanPostProcessor扩展方法,对bean进行修改
初始化前后除了beanPostProcessor扩展点还有其他扩展点,例如:
1 初始化前 postProcessBeforeInitialization()
2 执行构造方法之后 执行@postConstruct方法
3 所有属性赋初始化值之后 afterPropertiesSet()方法
4 初始化 配置文件中指定的init-method方法
5 初始化后 postProcessAfterInitialization()

	先执行BeanPostProcessor扩展点的前置方法postProcessBeforeInitialization(),再执行bean本身的构造方法再执行@PostConstruct标注的方法所有属性赋值完成之后执行afterPropertiesSet()然后执行 配置文件或注解中指定的 init-method 方法最后执行BeanPostProcessor扩展点的后置方法postProcessAfterInitialization()

8 此时已完成bean的初始化,在程序中就可以通过spring容器拿到这些初始化后的bean
9 随着容器销毁,springbean也会销毁,销毁bean之前,会执行@PreDestroy的方法,销毁时,执行配置文件中指定的 destroy-method方法

综上所述,其实就是根据配置文件或者注解信息,生成beanDefinition对象,循环beanDefinition去实例化bean
-> 注入/填充属性 -> 初始化前(@postConstruct) -> 初始化(afterPropertiesSet()) -> 初始化后(是否要AOP) -> 销毁

相关内容

热门资讯

四川设立3亿元重大文艺精品扶持...   3月17日,“锦绣天府·光影四川”四川影视政策及产业推荐会在香港国际影视展重磅举行。“四川造”电...
阿联酋外交部称国家运行总体稳定 本文转自【新华网】;新华社阿布扎比3月18日电(记者赵丹亮 夏晓)阿拉伯联合酋长国外交部18日发布通...
上海新阳:截至2月底公司股东人... 投资者提问:请问截止2月20日上海新阳(维权)最新股东人数董秘回答(上海新阳SZ300236):尊敬...
浩欧博:多款产品获得医疗器械注... 每经AI快讯,3月18日,浩欧博公告,全资子公司湖南浩欧博生物医药有限公司收到湖南省药品监督管理局核...
《小巷人家2》演员阵容传闻不断... 3月17日,正午阳光影业在2026年香港国际影视展(FILMART)上宣布,《小巷人家2》已正式列入...