http://www.iocoder.cn/Tomcat/yuliu/Start-analysis-4-components-int-and-start-method/
上回讲到,catalina的load和start会调用StandardServer的load和start。我们看到StandardServer的继承链:

LifecycleBase中实现了init和start的方法。
init 和 start 方法的定义可以看到这两个方法最终将会调用子类中定义的 initInternal 和 startInternal 。initInternal和startInternal在StandardServer中有定义。它们将循环调用Server类里内置的Service数组的init方法和start方法。initInternal和startInternal方法。别的组件也是类似,层层向里调用。
附上一个结构图:

org.apache.catalina.core.StandardServer、org.apache.catalina.core.StandardService、org.apache.catalina.connector.Connector、org.apache.catalina.core.StandardEngine、org.apache.catalina.core.StandardHost、org.apache.catalina.core.StandardContext 等等组件都维护了成员变量,进行引用。关系为1对1,或者1对多。
一个组件调用init方法时,会进而调用initInternal。在initInternal内部会对其包含的子组件依次调用init方法。形成层层调用,最终完成每个组件的生命周期。
说到生命周期,我们发现上述组件都是LifecycleBase的子类,而LifecycleBase又是Lifecycle的子类。Lifecycle顾名思义,就是生命周期,说明组件都遵循生命周期运作。
这就是Lifecycle的核心概念了,后文会讲述。