Я немного покопался, теперь это может быть не идеально и не будет включать в себя все мелкие детали, однако на широком уровне я думаю, что это происходит:
- Потокзапускать, скажем, каждые X секунд, этот поток обнаруживает, были ли какие-либо изменения в артефактах Grails (домен, служба, контроллер), могут быть включены пользовательские артефакты.
Если артефакт был изменен, то этотзапускается бит кода, который, я думаю, делает магию:
GroovyClassLoader gcl = new GroovyClassLoader (application.getClassLoader ());initialisePlugin (gcl.parseClass (DefaultGroovyMethods.getText (conn.getInputStream ())));
Я получил это, осмотрев DefaultGrailsPlugin, который является частью ядра Grails.
Все в Grails рассматривается как плагин, даже служба, домен, контроллеры и т. Д.