Как добавить динамические методы во время выполнения к объекту домена Grails без создания плагинов? - PullRequest
3 голосов
/ 12 декабря 2010

В справочной документации я нашел только такой пример, как

class ExamplePlugin {
  def doWithDynamicMethods = { applicationContext ->
        application.controllerClasses.each { controllerClass ->
             controllerClass.metaClass.myNewMethod = {-> println "hello world" }
        }
  }
}

Но я не хочу создавать плагин для такого кода ...

Ответы [ 2 ]

6 голосов
/ 12 декабря 2010

Вы можете добавить свои динамические методы в файл grails-app / conf / BootStrap.groovy в закрытии init , тогда они должны быть доступны при запуске приложения.

Обратите внимание, что динамические методы, которые вы добавляете таким образом, не будут доступны в ваших модульных тестах.Они будут доступны в интеграционных тестах и ​​во время выполнения.

2 голосов
/ 12 декабря 2010

тебе не нужно.Необходима только самая внутренняя линия вашего примера.Предположим, у вас есть

SomeDomain

в качестве класса.Вы можете сделать

SomeDomain.metaClass.newMethod  = {-> // stuff }

Теперь я собираюсь проверить это ...;)

Редактировать - я это подтвердил.Просто введите в командную строку следующую команду:

class Example {}; Example.metaClass.newMethod = {-> println 'hello'}; def e = new Example(); e.newMethod()
...