Grails 2.4.4プロジェクトに同じ名前のサービスが2つあります。これはRemittanceService
と呼ばれます。 1つはph.bank
(私は数週間前に作成しました)ともう1つはph.gov.advice.slip
(これは私が今日作成したものです)のパッケージに入っています。Grailsは、同じ名前のサービスを期待通りに解決しません。
class ... {
def bankRemittanceService
// added the word `bank` from its package
...
}
とph.gov.advice.slip.RemittanceService
のための注射剤:本に
class ... {
def remittanceService
...
}
:今、同じ名前を持つサービスの2つのインスタンスがあるので、私はからph.bank.RemittanceService
のすべての依存性注入を置き換えます
class ... {
def slipRemittanceService
// added the word `slip` from its package
...
}
ここで問題はそれぞれService
を指しておらず、代わりにエラーを返します:
java.lang.NullPointerException: Cannot invoke method [...] on null object
私は前のコードに戻すことに決めました。私はに宣言を返すとき:
def remittanceService
それは常にph.bank
で見つけService
に、決して私のService
新しく作成されたを指します。私の現在の修正は:
import ph.gov.advice.slip.RemittanceService
class ... {
def slipRemittanceService = new RemittanceService()
// Here I initialize it instead on how dependencies should be declared
...
}
しかし、私はそれが間違っていると感じました。これを行うにはもっとGrails-lyな方法がありますか?
Grailsの方法は、あなたの第2のサービスの名前を変更することで噴射することができます。回避策は以下のTarasの答えです – droggo