如何根据一些MongoAction属性为不同的条件设置不同的WriteConcern?

时间:2016-12-21 07:10:29

标签: spring mongodb java-8 spring-data-mongodb

根据MongoAction的某些条件设置不同的WriteConcern值的可能方法是什么? 例如,我想如果MongoAction包含一些像" ABD"的值,我希望不应该有WriteConcern。如果它包含" PAYMENT",那么WriteConcern应该是安全的。 我能做到这一点的可能性是什么?

1 个答案:

答案 0 :(得分:1)

以上可以通过实现WriteConcernResolver并覆盖resolve方法来完成,如下所示:

class MyAppWriteConcernResolver implements WriteConcernResolver {

  @Override
  public WriteConcern resolve(MongoAction action) {

    if (action.getEntityClass().getSimpleName().contains("ADB")) {
      return WriteConcern.NONE;
    } else if (action.getEntityClass().getSimpleName().contains("PAYMENT")) {
      return WriteConcern.SAFE;
    }

    return action.getDefaultWriteConcern();
  }
}

传入的参数MongoAction用于确定要使用的WriteConcern值。 MongoAction包含要写入的集合名称,POJO的java.lang.Class,转换后的DBObject以及作为枚举的操作(MongoActionOperation:{{1} },REMOVEUPDATE´, ´INSERTINSERT_LIST)以及其他一些背景信息。