0

多くのクラスが拡張する抽象クラスがあります。すべてが入っていsrc/groovyます。

私の抽象クラスでは、子クラスが継承するサービスを注入したいので、すべてのクラスに注入する必要はありません。

abstract class Animal {

    def noiseService

    abstract Sound getSound()

}

class Dog extends Animal {

    Sound getSound() {
        noiseService.bark()
    }

}

私の resources.groovy では:

animal(com.thepound.Animal) { bean ->
    noiseService = ref("noiseService")
}

これにより、抽象クラスであるためクラスをインスタンス化できないというエラーが発生したため、これを定義に追加しました。

    bean.abstract = true

エラーは発生しなくなりましたが、子クラスのサービスは常に null です。どうすればこれを機能させることができますか?

4

2 に答える 2

0

Dog をインスタンス化する場合は、次のようにします。

noiseService(com.whatever.DogNoiseService) { bean ->
}

animal(com.thepound.Dog) { bean ->
    noiseService = ref("noiseService")
}
于 2013-10-17T20:39:18.980 に答える