Wie Sie RICHTIG Spritzen Grails-services mit Spring-Ressource.groovy
Verwendung Von Grails 2.2.1
Habe ich Folgendes Grails-services definiert:
package poc
class TestService {
def helperService
}
class HelperService {
}
Benutzt habe ich den TestService wie folgt (die Ressourcen.groovy):
test(poc.TestService) {
}
jmsContainer(org.springframework.jms.listener.DefaultMessageListenerContainer) {
connectionFactory = jmsConnectionFactory
destinationName = "Test"
messageListener = test
autoStartup = true
}
Alles funktioniert, außer für die automatische Dosierung der helperService, wie es erwartet wird, wenn Sie den service erstellen von Grails. Nur so kann ich es auf der Arbeit ist manuell zu injizieren es wie folgt:
//added
helper(poc.HelperService) {
}
//changed
test(poc.TestService) {
helperSerivce = helper
}
Das problem ist, dass es nicht die Injektion der gleichen Weise wie Grails hat. Meine eigentliche service ist sehr Komplex, und wenn ich Spritzen muß alles manuell, inklusive aller Abhängigkeiten.
- Grails-services injiziert werden standardmäßig, wenn entsprechende Nomenklatur verwendet wird. Sie brauchen nicht, Eintrag in
resources.groovy
für Dienstleistungen. Was ist das problem, das Sie konfrontiert sind heutigen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bohnen deklariert Ressourcen.groovy sind normale Spring-beans und nicht standardmäßig Teilnahme an autowiring. Sie können dies tun, indem Sie die autowire-Eigenschaft auf Ihnen ausdrücklich:
In Ihrem spezifischen Fall haben, brauchen Sie nicht zu definieren, der testService-bean, die in Ihre Ressourcen.groovy, lediglich ein Verweis, um es von Ihrem jmsContainer bean wie so:
Dies ist dokumentiert in der "Grails und Spring" - Abschnitt der Grails-Dokumentation unter "verweisen auf Vorhandene Bohnen".
@Autowired
Spring-annotation