1.Meta上下文是平台传参的核心,千万别滥用,业务系统不得自行new Meta(),如已使用,请检查后去掉,优先改掉启动事件方法里的代码

2.当同步方法中需要meta时,应该通过BaseContextHandle.getMeta()来获取上下文信息;

3.当异步方法中需要meta时,应该调用rs.callAsync,不得自行创建线程

4.创建自己的 new Meta()


  /**
   * 第1步:使用try-with-resources new Meta(),会自动调用meta的close方法
   * 
   * <pre>
   * @Override
   * public void close(Meta meta) {
   *     // 回滚异常
   *     if (meta.getError()) {
   *         meta.rollback();
   *     }
   *     // 提交事物
   *     connection.commit();
   *     // 关闭连接
   *     connection.close();
   * }
   * </pre>
   */
  @MethodService(description = "创建用户")
  public void newMeta() {

      try (Meta meta = new Meta(Meta.SUPERUSER, new HashMap<>())) {
          // 第2步:设置meta到线程变量
          BaseContextHandler.setMeta(meta);
          /**
           * TODO第3步:处理自己的业务逻辑 TestRole role = new TestRole(); role.setRoleName("test"); role.set("remark", "测试");
           * role.create();
           * 
           * 
           * 
           */

          // 第4步:刷新所有的数据到数据库
          meta.flush();
      } catch (Exception e) {
          e.printStackTrace();
          Meta meta = BaseContextHandler.getMeta();
          // 第5步设置为异常,调用默认close方法的时候根据getError回滚
          if (meta != null) {
              meta.setError(true);
          }
      } finally {
          // 第6步:清理线程变量
          BaseContextHandler.remove();
      }

  }