2011-01-31 12 views
0

Iは、として定義されている非サービス・クラスを有する:BはGrailsのサービスであるサービスをgrailsでサービスに渡す?

class A{ 
    B b 
    A(B b){ this.b = b } 
} 

を。 、いくつかの理由

A a = new A(new B());

しかし、bは設定れることは決してありませんし、テストを実行するとき、変数b [local, the argument to the mehod]はインテリ-Jのデバッガでも、表示されていない:私のユニットテストでは、私はこれを試してみました。つまり、引数の名前をserviceに変更することができ、デバッガには未定義として表示されます。

サーバを起動しようとすると、Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeExceptionとなるので、これは関連していると思います。

ここでは何が起こっていますか?

+0

これは役に立ちますか? http://stackoverflow.com/questions/1703952/grails-how-do-you-unit-test-a-command-object-with-a-service-injected-into-it/ –

答えて

2

これは奇妙なシナリオのようです。 Aとは何ですか? Aが本当にサービスである可能性はありますか?

私はAサービスを提供することをお勧めします。この場合、通常の使用法に従ってBサービスを注入することができます。

Bが何か(autowiredフィールド)に依存しないかぎり、 'new B()'は本当に有効とは思わないでしょう。おそらくテストにBを注入する方が良いでしょうか?

+0

あなたはおそらく正しいでしょう。 A *はサービスでなければならないようです。 –

関連する問題