随着时间的流逝,水滴磨损了吗?
IOC容器在春季,我们可以大致分为两种类型:
它是最基本的IOC容器,它提供了IOC容器所需的基本功能。默认情况下使用延迟的初始化策略,也就是说,当容器启动时,bean的初始化未完成。只有在调用豆的实例时,它才能完成其初始化操作并取决于注射。
它是基于它实施的,并且具有功能。在提供诸如事件发布和国际化之类的功能的基础上。在同一时间,有很大的区别。当容器启动时,bean的初始化将完成。
有两个更重要的实施类:
在上述介绍之后,朋友应该知道这绝对不是本文的主角。
Xiaojie本文将带您了解使用容器时,它在其底部做了什么并理解它,这没什么可谈论的。
让我们首先有一张UML图片
然后做一些准备!
创建一个课程并将其添加到课堂上
使用容器。
在这句话中,所有内容都添加到容器中。所有逻辑是
这种参与方法是三行代码,并封装了代码。该代码写作值得我们学习!
它要调用此类别的非官方结构。要这样做,隐藏的呼叫。在父级非参数结构方法中,执行了非常重要的操作,该操作构建了beanfactory对象的实例以defaultListableBeanFactory。
让我们看一下分配逻辑。此方法位于类中。
然后调用另一种参与方法。
registernotationConfigprocessors着重于这条路!此时,我来了。
构造函数的主要作用是添加一些基础。读者的注册还将设置属性。在没有其他因素的影响下,将注册五个类别的中间,如下:
输入课程。
调用另一种参与方法:
称呼
称呼
看一下方法:
上面的代码看起来并不十分简单。如果您在Xiaojie面前看到了源代码,您将知道源代码中使用的对象的价值来自何处。
以上代码构建对象并设置以下值:
您还记得值的来源吗?此值是在构造对象时传递的参数。传递呼叫方法。registration是,类型为。
有五个参数。在此呼叫中,除了第一个参数值,其余的就是全部。参数的含义如下:
注册要注册为一个的类,类型为。
因为它是一个类,所以可以在类上写入类,分析注释和解析值的属性值。
下一个是方法,这也是最重要的方法。该方法在抽象类中定义。是的,父亲-in -law类。
该方法包括许多亚方法,下一步是分析每种儿童方法的作用。
刷新子类的方法将在此处调用。如何刷新特定的子类取决于子类,然后调用子类方法以再次获得一个。
为什么不支持刷新和支持!让我们首先看一个示例:
我们手动致电,因为我们使用一个容器,并且它是一个不支持重复刷新的子类,并且在启动时将报告错误。
让我们看一下特定的实现!
代码很简单!使用如何判断!它的两个函数:
如果要测试它,可以刷新,用容器的子类替换容器。两个容器之间的差异不是很大,但是创建的时机不一致。它将在建设性方法中初始化豆类,并将在中国初始化。
准备一些准备工作。例如:设置BeanFactory类加载程序,设置表达式解析器并添加Bean的后处理器。
准备分配属性。
上面添加的值反映在以下源代码中。
如果您对此感到不熟悉,请查看Xiaojie写的属性以填写这篇文章!
以上代码在此处使用!躺在#中。
在开始分析方法之前,您对Xiaojie做了什么,整理了先前的方法。在没有外力的干扰下,情况如下:
在两个步骤中将创建总共6个。
看完该方法之后。
方法内部呼叫,方法是引入的,方法将获得当前容器的收集。在大多数情况下,该集合是空的,除非手动调用容器的方法。写作如下:
输入该方法,该方法很长,但是代码逻辑非常清楚。
如上所述,可以在接口内注册其他。代码代码如下:
注意到课堂上的注释,因此不会对手动添加方法进行扫描。当然,这两种方式都可以。
此方法也很简单。界面的类已注册到容器中。如果您不认识您的朋友,则可以阅读有关Xiaojie Spring源代码的另一篇文章
该方法的作用是初始化对象以解决国际问题。
该方法非常简单。确定是否包含命名的bean,如果有bean。
在目录中创建文件夹是不需要的。
然后单击new->资源捆绑包,将弹出一个窗口:
消息是一个基本名称,要添加的语言类型是一种语言类型。配置后,单击“确定”。
然后输入文件,单击并单击进行编辑。
最终文件内容如下:
文件的名称不是很标准化。一般而言,有必要带来语言类型。
例如:,。当然,有些人需要带来地理价值观,例如:。
声明对象
测试
区域表。如果使用了国际文档名称,则有必要使用它。
它就是简单使用的。特定于ME与Spring Boot结合使用。
代码逻辑通常与方法一致。首先判断容器中是否有自定义的applicationeventmulticaster对象。如果有的话,可以使用它;注册一个SimpleApplicationEventMulticaster。可用于发布事件和事件监视。
将模板方法提供给子类以进行特定实现,然后将执行子类的方法提供。
注册显示器
此方法是实例实例非懒单case bean并注册到容器中。
关注该方法,在此方法中完成了实例化的所有非懒惰加载单case bean操作。该方法的特定实现位于类中。
感觉突然和开朗,只需称呼该方法。
InitlifecycleProcessor
随后,方法相似。
ONREFRESH方法中涉及的知识点,请转到:春季使用的使用:
PublishEvent是很好的 - 已知此方法用于发布事件。请注意此方法的参数:因此,该方法发布的事件是。对此方法进行称呼与我们在代码中的明确使用一致。我们定义的事件是称为自定义事件,在源代码中发布的事件称为“构建”事件。
然后让我们再次看一下方法。
执行上述代码后,将执行该方法。
在这一点上,启动过程已经完成。该方法的逻辑不太复杂!