code: private void initConfigs() {
          client = CuratorFrameworkFactory.newClient(configProfile.getConnectStr(), configProfile.getRetryPolicy());
          client.start();
  
          client.getCuratorListenable().addListener(new CuratorListener() {
              @Override
              public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception {
                  LOGGER.info("Event: {}", event);
  
                  final WatchedEvent watchedEvent = event.getWatchedEvent();
                  if (watchedEvent != null) {
                      LOGGER.debug("Watched event: {}", watchedEvent);
  
                      if (watchedEvent.getState() == Watcher.Event.KeeperState.SyncConnected) {
                          switch (watchedEvent.getType()) {
                              case NodeChildrenChanged:
                                  loadNode();
                                  break;
                              case NodeDataChanged:
                                  reloadKey(watchedEvent.getPath());
                                  break;
                              default:
                                  break;
                          }
                      }
                  }
              }
          });
  
          final CountDownLatch countDownLatch = new CountDownLatch(1);
          client.getConnectionStateListenable().addListener(new ConnectionStateListener() {
  
              @Override
              public void stateChanged(CuratorFramework client, ConnectionState newState) {
                  LOGGER.info("Connection state change: {}", newState);
                  if (newState == ConnectionState.CONNECTED) {
                      LOGGER.debug("Loading properties for node: {}", node);
                      loadNode();
                      countDownLatch.countDown();
                  } else if (newState == ConnectionState.RECONNECTED) {
                      loadNode();
                  }
              }
          });
  
          try {
              countDownLatch.await();
          } catch (InterruptedException e) {
              LOGGER.error(e.getMessage(), e);
              throw new RuntimeException("Config Load error.", e);
          }
  
          // Update local cache
          if (configLocalCache != null) {
              configLocalCache.saveLocalCache(this, node);
          }
      }
docs: 初始化节点