如何在一些MongoAction属性的基础上针对不同的条件设置不同的WriteConcern?
How to set different WriteConcern for different conditions on the basis of some MongoAction property?
根据 MongoAction 的某些条件设置不同的 WriteConcern 值的可能方法是什么?
例如,如果 MongoAction 包含一些值,如 "ABD",我希望不应该有 WriteConcern。如果它包含 "PAYMENT",那么 WriteConcern 应该是安全的。
我可以实现的可能情况是什么?
以上可以实现 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
:REMOVE
、UPDATE´, ´INSERT
、INSERT_LIST
、SAVE
) 和其他一些上下文信息。
根据 MongoAction 的某些条件设置不同的 WriteConcern 值的可能方法是什么? 例如,如果 MongoAction 包含一些值,如 "ABD",我希望不应该有 WriteConcern。如果它包含 "PAYMENT",那么 WriteConcern 应该是安全的。 我可以实现的可能情况是什么?
以上可以实现 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
:REMOVE
、UPDATE´, ´INSERT
、INSERT_LIST
、SAVE
) 和其他一些上下文信息。