code: public void mapping(Object src, Object target) throws BeanMappingException {
          boolean first = ContextObjectHolder.getInstance().enter();
          boolean isBeanMappingSupportScript = BeanMappingEnvironment.isBeanMappingSupportScript();
          BeanMappingParam param = new BeanMappingParam();
          param.setSrcRef(src);
          param.setTargetRef(target);
          param.setConfig(this.config);
          List<ValueProcess> vps = BeanMappingEnvironment.getBeanMappingVps();
          param.setProcesses(vps);
  
          // 执行mapping处理
          try {
              BeanMappingExecutor.execute(param);
          } finally {
              if (first) {// 第一个进入的负责清空数据，可能存在递归调用处理
                  ContextObjectHolder.getInstance().clear();
                  if (isBeanMappingSupportScript) {
                      ScriptHelper.getInstance().getScriptExecutor().disposeFunctions();// 清空记录
                  }
              }
          }
      }
docs: 根据定义的bean-mapping配置进行对象属性的mapping拷贝 , 允许自定义{@linkplain ValueProcess} {@linkplain SetValueProcess}
  
  @param src
  @param target
  @throws BeanMappingException