code: @Override
      public void unload(Component component) {
          if (!isLoaded(component)) return;
          logger.debug("Before unloading {}", component);
          //先卸载自身
          quickUnload(component);
          //再卸载依赖
          for (Component depended : component.getDependedComponents()) {
              //上面会自动检测是否已经加载，防止重复加载
              unload(depended);
          }
          //最后卸载其父组件
          if (component.getParent() != null) {
              //上面会自动检测是否已经加载，防止重复加载
              unload(component.getParent());
          }
          logger.debug("After  unloaded  {}", component);
      }
docs: 剥洋葱一样的卸载组件
  
  @param component 被卸载的组件