내 애플리케이션에서 프로세서 빈 컬렉션을 만드는 팩토리가 있습니다.팩토리 클래스를 CDI로 대체
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가 내 프로세서 하위 클래스를 찾으려면 기본 no-args ctor를 만들어야했습니다.
@Inject @Any Instance<Processor> allProcessorInstances;
CDI 컨테이너에 사용하려는 생성자를 사용하도록 알리는 방법이 있습니까? 아니면이 문제에 대해 잘못된 생각을하고 있습니까?