Инициализация класса домена Grails

У моего приложения Grails следующий бин Spring определен в 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 ответа

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

BootStrap {
    def calendarService
    def init() {
        calendarService.init()
    }
}

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

class CalendarService {

    @PostConstruct
    private void init() {
        User.findByEmail("foo@doo.com")
    }   
}
Другие вопросы по тегам