码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Spring 中Bean的生命周期


    目录

    Bean的生命周期

    五个阶段

    下面是一个bean对象创建到销毁经历过的方法。

    图示?

    问答

    普通Java类是在哪一步变成beanDefinition的


    推荐视频:

    阿里专家耗时一年,终于把Spring源码AOP、IOC、Ben生命周期、事物、设计模式以及循环依赖讲全了_哔哩哔哩_bilibili

    Bean的生命周期

    五个阶段

    1.创建前准备

    2.正式创建bean (实例化,在堆区分配内存,属性为默认值)

    3.依赖注入,主要是给属性赋值 (初始化)

    4.执行相关的初始化方法 (初始化)

    使用bean

    5.bean的销毁

    下面是一个bean对象创建到销毁经历过的方法。

    ==现在开始初始化容器==
    1.1 [BeanFactoryPostProcessor]这是BeanFactoryPostProcessor实现类构造器!!
    1.2 [BeanFactoryPostProcessor]BeanFactoryPostProcessor调用postProcessBeanFactory方法
    1.3 [BeanPostProcessor]这是BeanPostProcessor实现类构造器!!
    1.4 [InstantiationAwareBeanPostProcessorAdapter]这是InstantiationAwareBeanPostProcessorAdapter实现类构造器!!
    1.5 [InstantiationAwareBeanPostProcessorAdapter]InstantiationAwareBeanPostProcessor调用postProcessBeforeInstantiation方法

    2.1 [Person]【构造器】调用Person的构造器实例化
    2.2 [InstantiationAwareBeanPostProcessorAdapter]InstantiationAwareBeanPostProcessor调用postProcessPropertyValues方法

    3.1 [Person]【注入属性】注入属性address
    3.1 [Person]【注入属性】注入属性name
    3.1 [Person]【注入属性】注入属性phone
    3.2 [Person]【BeanNameAware接口】调用BeanNameAware.setBeanName()
    3.3 [Person]【BeanFactoryAware接口】调用BeanFactoryAware.setBeanFactory()
    3.4 [BeanPostProcessor]BeanPostProcessor接口方法postProcessBeforeInitialization对属性进行更改!
    3.5 [Person]【InitializingBean接口】调用InitializingBean.afterPropertiesSet()

    4.1 [Person]【init-method】调用的init-method属性指定的初始化方法
    4.2 [BeanPostProcessor]BeanPostProcessor接口方法postProcessAfterInitialization对属性进行更改!
    4.3 [InstantiationAwareBeanPostProcessorAdapter]调用postProcessAfterInitialization方法

    ==容器初始化成功==

    使用bean
    Person [address=广州, name=张三, phone=110]

    ==现在开始关闭容器!==
    5.1 [Person]【DiposibleBean接口】调用DiposibleBean.destory()
    5.2 [Person]【destroy-method】调用的destroy-method属性指定的初始化方法

    图示

    问题

    普通Java类是在哪一步变成beanDefinition的

    不用spring的时候 普通Java类对象的创建:

    而在spring中是所有的对象都是bean,普通Java类在创建前准备后就会正式成为bean,之后就是依赖注入,最后初始化。

    参考

    Spring 了解Bean的一生(生命周期)_浅然的专栏-CSDN博客_简述bean的生命周期

    Spring Bean的生命周期(非常详细) - Chandler Qian - 博客园

    Spring面试7连问|Bean的生命周期|AOP底层原理|@Autowired、@Resource、Configuration底层原理|事务底层原理|启动步骤_哔哩哔哩_bilibili[这里是图片008]https://www.bilibili.com/video/BV1hp4y1h7Di/?spm_id_from=333.788.recommend_more_video.0细说Spring——IOC详解(Bean的生命周期)_哔哩哔哩_bilibili[这里是图片009]https://www.bilibili.com/video/BV1Pv411q7XM?from=search&seid=15511048826781431632&spm_id_from=333.337.0.0

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    Netty(10)协议设计与解析(IdleStateHandler:空闲检测器、心跳)
    Biome-BGC生态系统模型与Python融合
    生产级Stable Diffusion AI服务部署指南【BentoML】
    Filebeat+Kafka+ELK搭建
    精品Python商铺摊位租赁管理系统
    数据结构 树练习题
    【信号处理】基于Matlab实现男女音变声系统
    电子统计台账:快速设置产品的排除与保留
    Python的Pandas库(一)基础使用
    药物滥用第五篇介绍
  • 原文地址:https://blog.csdn.net/egegerhn/article/details/126114174
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号