Я пишу плагин Grails, и мне нужно подключиться к методу save () домена, чтобы выполнить некоторую логику после сохранения. Мне нужно сделать это в нескольких классах домена. Я пытаюсь избежать событий гибернации в тех случаях, когда пользователь плагина не использует гибернацию с GORM.
Я много чего перепробовал, но вот то, что, по-моему, должно было иметь больше шансов на работу. Во всех случаях grailsSave равно null . Как я могу это сделать?
def doWithDynamicMethods = { ctx ->
application.domainClasses.each { dc ->
def grailsSave = dc.metaClass.pickMethod('save', [Map] as Class[])
domainClass.metaClass.save = { Map params ->
grailsSave.invoke(delegate, [params] as Object[])
println "Saved object, now do my thing"
//...
}
}
}
В моем классе * Plugin.groovy есть следующий набор:
def dependsOn = [domainClass: '1.1 > *', hibernate: '1.1 > *']
def loadAfter = ['hibernate']