Grails用户知道该框架的数据访问层通过其他软层的分离跨层提供AOP编程:afterInsert
,afterUpdate
,beforeInsert
....方法。
class Person{
def afterInsert(){
//... Will be executed after inserting record into Person table
}
}
我在构造函数(实例化)中搜索此方法的类型:异步或不。我找不到答案。
我的问题:如果不是,如果我们强制这些方法是异步的,那么GORM是否会被打破。
事实上,我们希望在不使用ready插件的情况下发送邮件,因为我们拥有自己的API。
答案 0 :(得分:1)
有很多方法可以实现您的目标,并且在不了解您的所有要求的情况下,很难为您提供满足所有要求的解决方案。但是,根据您提出的问题和提供的评论,您可以使用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和Thread池并进一步抽象。这取决于您的要求,以及您的能力。