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

相关内容

热门资讯

重大通报作弊器!乐乐上海麻将a... 重大通报作弊器!乐乐上海麻将ai智能透视辅助插件,乐乐上海麻将本来存在有外挂(有辅助挂方略)1、很好...
分享给玩家透视挂!家乡大贰ai... 分享给玩家透视挂!家乡大贰ai智能透视辅助工具,家乡大贰其实真的有外挂(有辅助挂细节)家乡大贰破解侠...
科普攻略开挂!英豪娱乐城ai智... 科普攻略开挂!英豪娱乐城ai智能透视辅助教程,英豪娱乐城好像真的是有外挂(有辅助挂头条)1、英豪娱乐...
总算了解辅助器!和悦游戏ai智... 总算了解辅助器!和悦游戏ai智能透视辅助教程,和悦游戏确实是真的有外挂(竟然有辅助挂)暗藏猫腻,小编...
揭秘关于辅助器!九九麻将ai智... 揭秘关于辅助器!九九麻将ai智能透视辅助技巧,九九麻将一贯是有外挂(有辅助挂方略)1、用户打开应用后...