Инициализация класса домена 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")
}
}