使い方Google Guiceみを必要とするパラメータ?
-
13-09-2019 - |
質問
か私は盲目でない利用方法をご覧くださいGuice(かい)に置き換え new
コレクトコール方法:
public boolean myMethod(String anInputValue) {
Processor proc = new ProcessorImpl(anInputValue);
return proc.isEnabled();
}
試験が異なる実装プロセッサーのようにしてもらいたいの new
電話のことをできる限り早く依存度を実施します。
う場合のクラスのことを覚えておいてくださいインスタンスのプロセッサーが入までのコンストラクタが、プロセッサを設計する不変なんだ新しいものです。
方法を教えてください行を実現するGuice(2.0)?
解決
あの時から使用したGuiceったのを覚えていった"の支援を当てる必要があります。ができますを定義するファクトリメソッドがパラメータを供給し、一部を噴射します。の代わりに注入プロセッサーのご注入プロセッサー工場を有するファクトリメソッドとしており、 anInputValue
パラメータとします。
かまの javadocのFactoryProvider.んだと確信していきます。
他のヒント
「プロバイダー」を注入することで、必要な効果を得ることができます。これは、実行時にプロセッサを提供するように依頼することができます。プロバイダーは、要求されるまでオブジェクトの構築を延期する方法を提供します。
それらはGuice Docsでカバーされています ここ と ここ.
プロバイダーはように見えます
public class ProcessorProvider implements Provider<Processor> {
public Processor get() {
// construct and return a Processor
}
}
プロバイダーはGUICEによって構築および注入されているため、ビットを注入することができます。
あなたのコードはように見えます
@Inject
public MyClass(ProcessorProvider processorProvider) {
this.processorProvider = processorProvider;
}
public boolean myMethod(String anInputValue) {
return processorProvider.get().isEnabled(anInputValue);
}
プロセッサはアクセスする必要がありますか anInputValue
ライフサイクル全体のために?そうでない場合は、使用しているメソッドコールの値を渡すことができます。
@Inject
public MyClass(Processor processor) {
this.processor = processor;
}
public boolean myMethod(String anInputValue) {
return processor.isEnabled(anInputValue);
}
所属していません StackOverflow