1

親と子のインジェクターを使用していますが、子のインジェクターにバインドされることを意図した親のインジェクターのクラスに誤ってアクセスしないようにしたいと思います。親インジェクターがクラスにアクセスすると、自動的にバインドされる可能性があります(スコープが重要であるため、誤ってバインドされます)。

親インジェクターで自動バインディングを強制的に失敗させる方法、または少なくとも実行時エラーを報告する方法はありますか?

たとえば、Foo「違法に」バーを要求するメソッドがある場合、次のようになります。

class Bar { @Inject Bar() {} } // Shouldn't be accessible in Foo's injector
class Foo { @Inject Foo(Bar bar) {} } // Binding should fail here
4

2 に答える 2

0

バインダーのドキュメントをご覧ください。

http://google-guice.googlecode.com/git/javadoc/com/google/inject/Binder.html

requireExplicitBindings()あなたが必要なものかもしれません。bind()モジュールでステートメントを使用すると、自動バインディングが無効になり、またはを介して構成されたクラスのみprovidesが注入されます。

于 2012-07-19T17:46:28.017 に答える
0

どうやら、これを行う唯一の方法は、禁止されているクラスごとにプロバイダーメソッドを作成することです。各プロバイダーメソッドは実行時例外をスローします。

バインド時にこれを行うことをサポートするための拡張リクエストを送信しました。

于 2012-07-19T20:34:43.783 に答える