アプリケーションにプロセッサ Bean のコレクションと、それらを作成するためのファクトリがあります。
public abstract class Processor {
public Processor(String config) { .... }
public abstract void process() throws Exception;
}
public class Processor1 extends Processor {
public Processor1(String config) { super(config);..}
public void process() {....}
}
public Processor newProcessor(String impl, String config) {
// use reflection to create processor
}
CDI を使用してファクトリ クラス/メソッドを置き換えることはできますか? 代わりに @Produces を使用しますか?
以下を使用して、必要なインスタンスを反復または選択してみました。しかし、Weld は allProcessorInstances.isUnsatisfied() == true と教えてくれます。Weld が Processor サブクラスを見つけるために、デフォルトの引数なし ctor を作成する必要がありました。
@Inject @Any Instance<Processor> allProcessorInstances;
使用したいコンストラクターを使用するように CDI コンテナーに指示する方法はありますか? それとも、この問題について間違った方法で考えていますか?