Инициализация класса домена Grails - PullRequest
2 голосов
/ 11 мая 2010

Приложение My Grails имеет следующий Spring bean-компонент, определенный в spring/resources.groovy

calendarService(CalendarService) { bean ->
    bean.initMethod = "init"     
}

Этот метод выглядит примерно так:

class CalendarService {
    void init() {
        User.findByEmail("foo@doo.com")
    }   
}

Когда я вызываю динамический искатель findByEmail, я получаю MissingMethodException. Я предполагаю, что я пытаюсь вызвать этот метод слишком рано, то есть до того, как к классам домена были добавлены динамические искатели в их метакласс. Одним из решений было бы позвонить самому CalendarService.init() из Bootstrap.init, а не поручать Spring позвонить, но есть ли лучшее решение?

Спасибо, Дон

Ответы [ 2 ]

3 голосов
/ 11 мая 2010

Вы правы, как описано в этом посте , если вам нужны динамические методы, вам лучше использовать BootStrap.groovy

BootStrap {
    def calendarService
    def init() {
        calendarService.init()
    }
}
0 голосов
/ 27 мая 2014

Следующее работает без каких-либо настроек в resources.groovy

class CalendarService {

    @PostConstruct
    private void init() {
        User.findByEmail("foo@doo.com")
    }   
}
...