code: @Override
      public void scan(String handlerLocations) {
          if (StringHelper.isBlank(handlerLocations)) {
              return;
          }
  
          // 对配置的xml路径按逗号分割的规则来解析，如果是XML文件则直接将该xml文件存放到xmlPaths的Set集合中，
          // 否则就代表是xml资源目录，并解析目录下所有的xml文件，将这些xml文件存放到xmlPaths的Set集合中，
          ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
          String[] locationArr = handlerLocations.split(ZealotConst.COMMA);
          for (String location: locationArr) {
              if (StringHelper.isBlank(location)) {
                  continue;
              }
  
              // 判断文件如果是具体的Java文件和class文件，则将文件解析成Class对象.
              // 如果都不是，则视其为包,然后解析该包及子包下面的所有class文件.
              String cleanLocation = location.trim();
              if (StringHelper.isJavaFile(cleanLocation) || StringHelper.isClassFile(cleanLocation)) {
                  this.addClassByName(classLoader, cleanLocation.substring(0, cleanLocation.lastIndexOf('.')));
              } else {
                  this.addClassByPackage(classLoader, cleanLocation);
              }
          }
  
          this.addTagHanderInMap();
      }
docs: 扫描配置的zealot handler包下所有的class.
  并将含有'@Tagger'和'@Taggers'的注解的Class解析出来，存储到tagHandlerMap配置中.
  
  @param handlerLocations handler所在的位置