apollo-client-config-data/src/main/java/com/ctrip/framework/apollo/config/data/extension/initialize/ApolloClientExtensionInitializeFactory.java/ApolloClientExtensionInitializeFactory/initializeExtension
class ApolloClientExtensionInitializeFactory:  public void initializeExtension(Binder binder, BindHandler bindHandler) {
    ApolloClientProperties apolloClientProperties = this.apolloClientPropertiesFactory
        .createApolloClientProperties(binder, bindHandler);
    if (apolloClientProperties == null || apolloClientProperties.getExtension() == null) {
      this.log.info("apollo client extension is not configured, default to disabled");
      return;
    }
    ApolloClientExtensionProperties extension = apolloClientProperties.getExtension();
    if (!extension.getEnabled()) {
      this.log.info("apollo client extension disabled");
      return;
    }
    ApolloClientMessagingType messagingType = extension.getMessagingType();
    log.debug(Slf4jLogMessageFormatter
        .format("apollo client extension messaging type: {}", messagingType));
    switch (messagingType) {
      case LONG_POLLING:
        this.apolloClientLongPollingExtensionInitializer
            .initialize(apolloClientProperties, binder, bindHandler);
        return;
      case WEBSOCKET:
        this.apolloClientWebsocketExtensionInitializer
            .initialize(apolloClientProperties, binder, bindHandler);
        return;
      default:
        throw new IllegalStateException("Unexpected value: " + messagingType);
    }
  }