当前位置: 首页 > 网络应用技术

弹簧源代码(15)-spring启动Process -ApplicationContext

时间:2023-03-06 13:27:37 网络应用技术

  随着时间的流逝,水滴磨损了吗?

  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是很好的 - 已知此方法用于发布事件。请注意此方法的参数:因此,该方法发布的事件是。对此方法进行称呼与我们在代码中的明确使用一致。我们定义的事件是称为自定义事件,在源代码中发布的事件称为“构建”事件。

  然后让我们再次看一下方法。

  执行上述代码后,将执行该方法。

  在这一点上,启动过程已经完成。该方法的逻辑不太复杂!