Grails域类初始化

时间:2010-05-11 10:07:31

标签: spring grails groovy gorm dynamic-finders

我的Grails应用程序在spring/resources.groovy

中定义了以下Spring bean
calendarService(CalendarService) { bean ->
    bean.initMethod = "init"     
}

此方法类似于:

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

当我调用动态查找器findByEmail时,我得到MissingMethodException。我的猜测是我试图过早地调用这个方法,即在域类将动态查找器添加到其元类之前。一个解决方案是从CalendarService.init()调用Bootstrap.init,而不是指示Spring调用它,但是有更好的解决方案吗?

谢谢, 唐

2 个答案:

答案 0 :(得分:3)

你是对的,如本post所述,如果你需要动态方法,最好使用BootStrap.groovy

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

答案 1 :(得分:0)

以下工作在resources.groovy

中没有任何配置
class CalendarService {

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