Grails用户知道,该框架的数据访问层通过与其他软层(afterInsert
,afterUpdate
,beforeInsert
....方法)分离的跨层提供AOP编程。
class Person{
def afterInsert(){
//... Will be executed after inserting record into Person table
}
}
我在构造方法(实例化)上搜索此方法的类型:异步或而不是。而且我找不到答案。我的问题是:如果没有,如果我们强制将这些方法异步化,那么GORM是否会被破坏?
更新:
确实,由于我们拥有自己的API,我们希望不使用现成的插件就发送邮件。
最佳答案
有很多方法可以完成您要寻找的内容,并且不了解您的所有要求,很难为您提供满足所有要求的解决方案。但是,根据您的问题和提供的评论,您可以使用Grails中内置的Asynchronous features完成此操作。
这只是我脑海中想出的东西的草图/示例。
import static grails.async.Promises.*
class Person {
...
def afterUpdate() {
def task1 = task {
// whatever code you need to run goes here.
}
onComplete([task1]) {
// anything you want to run after the task completes, or nothing at all.
}
}
...
}
这只是一个选择。同样,您有很多选择。您可以改为发送JMS消息,并在其他计算机上对其进行处理。您可以使用某种类型的事件系统,甚至可以使用Spring AOP和线程池并将其进一步抽象。这取决于您的要求以及您的能力。
关于performance - 如何使afterInsert/afterUpdate GORM方法成为异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25907524/