如何使用Spring bean作为Morphia实体监听器?

时间:2018-06-12 06:58:12

标签: spring morphia

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字段中)?

1 个答案:

答案 0 :(得分:1)

该功能由ObjectFactory类提供,可以使用MapperOptions.setObjectFactory进行设置。自定义ObjectFactory应该为请求的类类型返回适当的Spring bean。