Frage

Meine Grails App hat folgende Spring-Bean in spring/resources.groovy definiert

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

Diese Methode sieht etwa so aus:

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

Wenn ich den dynamischen Finder findByEmail nennen erhalte ich eine MissingMethodException. Meine Vermutung ist, dass ich versuche, diese Methode zu nennen zu früh, das heißt, bevor die Domain-Klassen, die dynamischen Findern ihrer metaclass hinzugefügt haben. Eine Lösung wäre CalendarService.init() mich anrufen von Bootstrap.init, anstatt Frühling anweist es zu nennen, aber gibt es eine bessere Lösung?

Danke, Don

Keine korrekte Lösung

Andere Tipps

Du hast recht, wie beschrieben in diesem Post , wenn Sie brauchen die dynamischen Methoden, die Sie besser mit BootStrap.groovy

gehen würde
BootStrap {
    def calendarService
    def init() {
        calendarService.init()
    }
}

Die folgenden Arbeiten ohne config in resources.groovy

class CalendarService {

    @PostConstruct
    private void init() {
        User.findByEmail("foo@doo.com")
    }   
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top