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) -> 销毁

相关内容

热门资讯

玩家必看教程!智星德州扑克辅助... 玩家必看教程!智星德州扑克辅助挂多功能透视工具,好像真的是有挂(有挂详细)1、该软件可以轻松地帮助玩...
记者揭秘!wpk辅助挂多功能透... 记者揭秘!wpk辅助挂多功能透视工具,原来存在有挂(有挂猫腻)1、全新机制【wpkai辅助工具激活码...
科普!德扑圈辅助挂多功能透视工... 科普!德扑圈辅助挂多功能透视工具,总是有挂(有挂教学)1、实时德扑圈透视辅助更新:用户可以随时随地访...
玩家必备攻略!WPK辅助挂多功... 玩家必备攻略!WPK辅助挂多功能透视工具,其实存在有挂(确实有挂)1、任何WPK透视是真的假的的玩家...
分享一款!智星菠萝德州辅助挂多... 分享一款!智星菠萝德州辅助挂多功能透视工具,总是是真的有挂(有挂神器)1)智星菠萝德州辅助插件:进一...