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

嵌入式servlet容器如何启动?

时间:2023-03-06 21:57:27 网络应用技术

  在传统开发中,开发人员需要独立部署容器,例如,并将应用程序放入容器中才能运行。这更加乏味和不便。嵌入式容器的出现改变了这种情况。当使用嵌入式容器时,我们不再需要对外部设施的任何支持。应用程序本身是一个可以独立运行的个人。作为生产力的典型代表,默认情况下使用该应用程序。让我们今天(基于)探索它。

  据信该代码熟悉所有人。它是应用程序的入口。一切都必须从这里开始。我们直接跟进并来

  静态函数创建一个实例,并调用该方法,并且构造函数继续跟进

  在这里,我们关注如何推断应用程序的类型。简而言之,根据课程路径下是否有指定的文件来判断。我们的示例中的类型是推断的。然后来到示例方法

  消除逻辑后,该方法主要做了两件事:

  嗯,嵌入式?看来这两个步骤隐藏了神秘。浏览这两个步骤的源代码很容易知道,而刷新无非是调用其方法。

  AnnotationConfigservletWebserverapplicationContext

  可以看出,观察到的继承树是我们对红色圆圈非常熟悉,并在传统环境中使用。红色圆圈中的零件还可以猜测我们对名称的关注的名称。

  更深入的更深层次,它继承了自我启示,并根据父级提供正确的支持并阅读和分析配置类。

  该功能的这一部分是由代理商实现的。这两个兄弟也是我们的老朋友,这与嵌入式容器的推出无关,因此我们不会说太多。

  WeberverapplicaitonContext接下来,我们的重点将下降。让我们看一下它的定义

  查看其关联的定义

  这是对嵌入式容器的抽象,它代表一个已完全配置的容器。换句话说,最终用户无需注意容器的特定细节,只需要知道如何启动或关闭它;并负责创建,启动或关闭它(即管理其生命周期)作为最终用户在正确的时间。

  ServletWebServerApplicationContext实现了界面,其创建和管理在其自身的刷新过程中被凝结,也就是说,当它被称为时。特别是调用挂钩方法的时间,此方法的时机是:

  创建的时机是由类型类型中唯一的唯一的时间创建。注意在这里携带参数 - 此参数非常重要,我们将稍后讨论。

  此后,立即注册了两种类型的组件来管理生命周期,其中一种用于优雅闭合,另一种用于开始或停止。

  它是一个定义的基本组件,本文的主题不是它。但是,为了促进通话顺序,这是一个简短的说法:它是由驾驶员驱动的。初始化类型后,将在其中进行调整和处理。

  在这一点上,分析如何启动嵌入式容器。

  ServletContextInitializer提到,在创建时它将带有一个参数,并且其类型为。

  后者的作用是提供的标准初始化设备。我们还可以在中间配置,不同之处在于,其生命周期是管理的而不是容器。

  步骤1、2和3相对简单。让我们来看看。让我们看一下步骤4。

  当初始化时,所有这些都将被检索;如果仍然有本地或类型的类型,它们将被包装到相应的菜单中,最后对All.LET进行整理。LET查看如何将其添加到它中。

  从继承树可以看出,这也可以实现。查看其方法

  实施方法

  最终意识到

  但是,一个直接添加到动态中,没有其他。

  在帖子中,我们分析了何时创建并启动了嵌入式容器,但没有提及它是如何创建的。在这些容器中,我不会盲目bb ~~