Morphia documentation提供了一个示例,说明如何使用@EntityListeners
将生命周期方法外部化为单独的类:
@EntityListeners(DigitalSigner.class)
public class BankAccount {
@Id
String id;
Date lastUpdated = new Date();
}
class DigitalSigner {
@PrePersist
void prePersist(final Object entity, final DBObject dbObject) {
dbObject.put("signature", sign(dbObject));
}
}
但是,文档未说明如何实例化类。我的猜测是通过调用no-args构造函数。
我需要从实体监听器调用Spring服务或让Spring服务作为监听器。如何实现这一目标(最好不要将服务延伸到static
领域)?
该功能由ObjectFactory类提供,可以使用MapperOptions.setObjectFactory设置。自定义ObjectFactory应该为请求的类类型返回适当的Spring bean。