Spring Bean 实例的注册流程

Spring Bean 实例的注册流程

关于Spring Bean 实例的注册流程:
1.定义好Spring的配置文件。
2.通过Resource对象将Spring配置文件进行抽象,抽象成一个具体的Resource对象(如ClassPathResource)
3.定义好要使用Bean工程(各种BeanFactory).
4.定义好XmlBeanDefinitionReader对象,并将工厂对象作为参数传递进去,从而构建好二者间的关联关系。
5.通过XmlBeanDefinitionReader对象读取之前所抽象出来的Resource对象。
6.流程开始进行解析
7.针对XML文件进行各种元素以及元素属性的解析,这里面,真正的解析是通过BeanDefinitionParserDelegate对象来完成(使用委托模式)
8.通过BeanDefinitionParserDelegate对象在解析XML文件时,又使用了模板方法(pre,process,post)
9.当所有bean标签都解析完毕后,开始定义一个BeanDefinition对象,该对象是一个非常重要的对象,里面容纳了一个bean相关的所有属性
10.BeanDefinition对象创建完毕之后,Spring又会创建一个BeanDefinitionHolder对象来持有这个BeanDefinition对象。
11.BeanDefinitionHolder对象主要包含:beanName 和BeanDefinition.
12.工厂会把解析出来的bean信息存放到内部的一个ConcurrentHashMap中,key:beanName(唯一),value:BeanDefinition对象创建完毕之后,Spring又会创建一个BeanDefinition对象
13.调用Bean解析完毕的触发动作,从而触发相应的监听器的方法的执行(使用观察者模式)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100722.html原文链接:https://javaforall.net

(0)
上一篇 2021年7月13日 上午8:00
下一篇 2021年7月13日 上午9:00


相关推荐

  • MySQL 自定义函数_mysql随机时间函数

    MySQL 自定义函数_mysql随机时间函数下面的自定义函数 中,注意delimiter的使用,使用了 group_concat()、find_in_set()  函数,delimiter$$use`test`$$dropfunctionifexists`queryOnePartnerIdById`$$createdefiner=`root`@`localhost`function`queryO

    2025年10月5日
    5
  • 定时任务cron表达式使用详解

    定时任务cron表达式使用详解项目中有时会需要定时去触发一些任务 Java 实现定时任务一般有三种方法 JDK 自带的 Timer 以及 JDK1 5 新增的 ScheduledExe Quartz 定时器 简单却强大的 JAVA 作业调度框架 Spring3 0 以后自带的 task 任务调度 可以将它看成一个轻量级的 Quartz 而且使用起来比 Quartz 简单许多 这里不去细谈三种定时任务实现的原理 可以自行去百度查看 下面主要说一下在设置定时任务时用到的 cron 表达式 Linux 系统中内置 cron 进程 通过 cron

    2025年6月3日
    5
  • python滑动验证码_python编程是啥

    python滑动验证码_python编程是啥程序功能:程序模仿登入京东主页,自动输入帐号和密码,完成滑块验证,最后领取每日签京豆关键难点:80%的难点在于滑块验证importtimeimportcv2importrandomimportopenpyxlfromurllibimportrequestfromseleniumimportwebdriverimportnumpyasnpfromselenium.webdriver.common.action_chainsimportActionChai

    2025年12月15日
    9
  • MATLABfill函数_matlab中C的模块名称是什么

    MATLABfill函数_matlab中C的模块名称是什么matlab移植C/C++代码时,发现不管是opencv还是IPP库都没有填充联通区域函数imfill(),于是只能自己动手了。先展示一下imfill()函数的功能,如下图:上图中,左图是一个二值图像,白色是手臂边缘像素值为1,黑色区域像素值为0,现在想将手臂填充1,用imfill()函数可以实现该功能,但C/C++代码需要自己实现。C/C++代码:boolimFill(Ipp8u*img,intwidth,intheight){ vector<int>q; int

    2025年11月4日
    5
  • pycharm连接服务器方法

    pycharm连接服务器方法一个科研混子的备忘录 方法实际操作可以顺利链接 记录下来防止过两天忘了咋整

    2026年3月18日
    3
  • java 九九乘法表

    java 九九乘法表应该没有比这更更简单的了吧 九九乘法表 for inti 1 i 1 j System out print i x j i j t System out println

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号