docs: @Override
      protected final void initFilterBean() throws ServletException {
          try {
          	
          	long startTime = System.currentTimeMillis();
          	
              if (logger.isInfoEnabled()) {
                  logger.info("[init] call 'init/rootContext'");
              }
  
              if (logger.isDebugEnabled()) {
                  StringBuilder sb = new StringBuilder();
                  @SuppressWarnings("unchecked")
                  Enumeration<String> iter = getFilterConfig().getInitParameterNames();
                  while (iter.hasMoreElements()) {
                      String name = (String) iter.nextElement();
                      sb.append(name).append("='").append(getFilterConfig().getInitParameter(name))
                              .append("'\n");
                  }
                  logger.debug("[init] parameters: " + sb);
              }
  
              WebApplicationContext rootContext = prepareRootApplicationContext();
  
              if (logger.isInfoEnabled()) {
                  logger.info("[init] exits from 'init/rootContext'");
                  logger.info("[init] call 'init/module'");
              }
  
              // 识别 Rose 程序模块
              this.modules = prepareModules(rootContext);
  
              if (logger.isInfoEnabled()) {
                  logger.info("[init] exits from 'init/module'");
                  logger.info("[init] call 'init/mappingTree'");
              }
  
              // 创建匹配树以及各个结点的上的执行逻辑(Engine)
              this.mappingTree = prepareMappingTree(modules);
  
              if (logger.isInfoEnabled()) {
                  logger.info("[init] exits from 'init/mappingTree'");
                  logger.info("[init] exits from 'init'");
              }
  
              long endTime = System.currentTimeMillis();
              
              // 打印启动信息
              printRoseInfos(endTime -  startTime);
  
              //
          } catch (final Throwable e) {
              StringBuilder sb = new StringBuilder(1024);
              sb.append("[Rose-").append(RoseVersion.getVersion());
              sb.append("@Spring-").append(SpringVersion.getVersion()).append("]:");
              sb.append(e.getMessage());
              logger.error(sb.toString(), e);
              throw new NestedServletException(sb.toString(), e);
          }
      }