啓動類:Bootstrap
INSTANCE.setup(true, settings, environment);
INSTANCE.start();
啓動start
private void start() {
node.start();
keepAliveThread.start();
}
Node
對每個node輪詢啓動,如果它是一個lifecycleComponent,則調用start方法。
for (Class<? extends LifecycleComponent> plugin : pluginsService.nodeServices()) {
injector.getInstance(plugin).start();
}
AbstractLifeCycleComponent
@SuppressWarnings({"unchecked"})
@Override
public T start() {
if (!lifecycle.canMoveToStarted()) {
return (T) this;
}
for (LifecycleListener listener : listeners) {
listener.beforeStart();
}
doStart();
lifecycle.moveToStarted();
for (LifecycleListener listener : listeners) {
listener.afterStart();
}
return (T) this;
}
protected abstract void doStart();