摘要
Mongo 的free schema,提供了灵活的数据结构,和快速开发的能力,但是也造成了松散的数据组织形式。比如说有些字段不允许为null的,需要符合一定格式的。也就是数据库的校验,validator。这个功能在mongo 3.2才提供,之前是并没有的。这里提供一种基于MongoEvent的解决方案,来实现对于数据的校验。
mongo event
Mongo 提供了Event的类型MongoMappingEvent 类,然后其他的具体事件类型都继承这个类,比兔BeforeConvertEvent,BeforeConvertEvent,BeforeSaveEvent.
AbstractMongoEventListener 抽象类事件方法,
onBeforeConvertEvent(),onBeforeConvertEvent()方法,在ApplicationEvent类中提供了基于方法参数MongoMappingEvent去调用不同的事件方法
提供了Mongo Event的类型,以及处理方法
public void onApplicationEvent(MongoMappingEvent<?> event) {
// 根据事件类型,来执行不同的方法
if (event instanceof AfterLoadEvent) {
AfterLoadEvent<?> afterLoadEvent = (AfterLoadEvent<?>) event;
if (domainClass.isAssignableFrom(afterLoadEvent.getType())) {
onAfterLoad((AfterLoadEvent<E>) event);
}
return;
}
if (event instanceof AbstractDeleteEvent) {
Class<?> eventDomainType = ((AbstractDeleteEvent) event).getType();
if (eventDomainType != null && domainClass.isAssignableFrom(eventDomainType)) {
if (event instanceof BeforeDeleteEvent) {
onBeforeDelete((BeforeDeleteEvent<E>) event);
}
if (event instanceof AfterDeleteEvent) {
onAfterDelete((AfterDeleteEvent<E>) event);
}
}
return;
}
Object source = event<