2017-03-28 3 views
1

Grails 3.2.8 scheint keine Abhängigkeitsinjektion für Domain-Klassen standardmäßig zu funktionieren.Grails 3.2.8 Dependency-Injektion in Domain-Klassen

Wenn ich eine neue App erstellen und Spring Security-Core 3.1.1 mit folgendem println hinzufügen:

protected void encodePassword() { 
    println "springSecurityService == null? ${(springSecurityService==null).toString()}" 
    password = springSecurityService?.passwordEncoder ? springSecurityService.encodePassword(password) : password 
} 

ich:

springSecurityService == null? true 

Wenn ich versuche zu schaffen und einen Dienst in ähnlicher Weise eingespritzt wird, Ich bekomme den gleichen Nullwert. Gibt es eine gute Problemumgehung?

+2

Wie Sie die 'service' definieren? Das bereitgestellte Code-Snippet ist nicht ausreichend. –

+0

Zusammen damit die Verzeichnisstruktur auch, wenn Sie die Konventionen richtig befolgen, dann sollte es funktionieren. "Grails 3.2.8 scheint standardmäßig keine Abhängigkeitsinjektion für Domain-Klassen zu haben." ist wahrscheinlich eine falsche Verallgemeinerung. Für meine App funktioniert 3.2.6 Grails gut. –

Antwort

3

Beginnend mit Grails 3.2.8 ist das Autowiren von Domain-Klassen aus Performance-Gründen standardmäßig deaktiviert. Sie können es wieder aktivieren, indem grails.gorm.autowire = true

Grame hat einen Patch für Spring-Security-Kern erwähnt, um zu arbeiten, die Notwendigkeit, die Service-Injektion kommt, in der Zwischenzeit wieder autowiring aktivieren.

Siehe meine inoffiziellen Changelog auf 3.2.8 hier: https://gist.github.com/erichelgeson/be2f9f62ab63d989f2ec962ae7001f21

+1

Ich habe gerade Ihr inoffizielles Änderungsprotokoll als Lesezeichen gespeichert. Vielen Dank! – Anonymous1