code: private static BatchExecutor getSetBatchExecutor(BeanMappingParam param, BeanMappingObject config) {
          BatchExecutor executor = config.getSetBatchExecutor();
          if (executor != null) { // 如果已经生成，则直接返回
              return executor;
          }
  
          if (canBatch(config.getBehavior()) == false) {
              config.setBatch(false);
              return null;
          }
  
          // 处理target操作数据搜集
          List<String> targetFields = new ArrayList<String>();
          List<Class> targetArgs = new ArrayList<Class>();
          Class locatorClass = param.getTargetRef().getClass(); // 检查一下locatorClass
          for (BeanMappingField beanField : config.getBeanFields()) {
              String targetField = beanField.getTargetField().getName();
              Class targetArg = beanField.getTargetField().getClazz();
              if (StringUtils.isEmpty(targetField) || targetArg == null) {
                  return null; // 直接不予处理
              }
  
              Class selfLocatorClass = beanField.getTargetField().getLocatorClass();
              if (selfLocatorClass != null && selfLocatorClass != locatorClass) {
                  config.setBatch(false);// 直接改写为false，发现locatorClass存在于不同的class
                  return null;
              }
  
              if (canBatch(beanField.getBehavior()) == false) {
                  config.setBatch(false);
                  return null;
              }
  
              SetExecutor set = beanField.getSetExecutor();// 只针对property进行batch优化
              if (set != null && (set instanceof FastPropertySetExecutor || set instanceof PropertySetExecutor) == false) {
                  config.setBatch(false);
                  return null;
              }
  
              // 搜集信息
              targetFields.add(targetField);
              targetArgs.add(targetArg);
          }
          // 生成下target批量处理器
          executor = Uberspector.getInstance().getBatchExecutor(locatorClass,
                                                                targetFields.toArray(new String[targetFields.size()]),
                                                                targetArgs.toArray(new Class[targetArgs.size()]));
          if (config.getBehavior().isDebug() && logger.isDebugEnabled()) {
              logger.debug("TargetClass[" + param.getTargetRef().getClass() + "]SetBatchExecutor is init");
          }
          config.setSetBatchExecutor(executor);
          return executor;
      }
docs: 获取set操作的BatchExecutor