Ich habe zwei Dienste mit demselben Namen in meinem Projekt Grails 2.4.4, RemittanceService
genannt. Eines ist im Paket auf ph.bank
(das ich vor Wochen erstellt habe) und ein anderes ist auf ph.gov.advice.slip
(die ich heute erstellt habe). Da nun zwei Instanzen des Dienstes mit dem gleichen Namen sind, ersetzt ich alle Abhängigkeitsinjektion von ph.bank.RemittanceService
aus:Grails löst nicht die gleichnamigen Dienste wie erwartet
class ... {
def remittanceService
...
}
in dieser:
class ... {
def bankRemittanceService
// added the word `bank` from its package
...
}
und die Injektionen für ph.gov.advice.slip.RemittanceService
in:
Jetzt ist das Problem, dass es nicht die entsprechende Service
zeigt, und stattdessen einen Fehler zurückgibt:
java.lang.NullPointerException: Cannot invoke method [...] on null object
Ich entschied mich, meinen vorherigen Code wiederherzustellen. Wenn ich die Erklärung in zurück:
def remittanceService
es zeigt immer auf die meinen auf ph.bank
, nie gefunden Service
neugeschaffenen Service
. Mein aktueller Fix ist:
import ph.gov.advice.slip.RemittanceService
class ... {
def slipRemittanceService = new RemittanceService()
// Here I initialize it instead on how dependencies should be declared
...
}
Obwohl ich fühlte, dass das falsch ist. Gibt es mehr Grails-ly Weg, dies zu tun?
Grails Weise ist Ihre zweite Dienst umbenennen .. gibt es einen Grund für Konvention über Konfiguration und Standard mit Namen verbindlich. Workaround ist in der Antwort unten von Taras – droggo