code: @Override
      public void load(Component component) throws Exception {
          if (isLoaded(component)) return;
          logger.debug("Before loading {}", component);
          //首先加载父组件
          if (component.getParent() != null) {
              //上面会自动检测是否已经加载，防止重复加载
              load(component.getParent());
          }
          //而后加载依赖的组件
          for (Component depended : component.getDependedComponents()) {
              //上面会自动检测是否已经加载，防止重复加载
              Dependency textualDependency = new Dependency(depended.getGroupId(), depended.getArtifactId());
              Dependency actualDependency = component.getDependency(textualDependency);
              if( actualDependency.isProvided() || actualDependency.isTest() )
                  continue;
              load(depended);
          }
          quickLoad(component);
          //最后，加载自身
          logger.debug("After  loaded  {}", component);
      }
docs: 自顶向下的加载组件
  
  @param component 被加载的组件