У меня есть метод производителя CDI, который - в зависимости от некоторых условий, не относящихся к этому примеру - создает объекты различных типов:метод производителя Generic CDI не работает, как ожидалось
public class TestProducer {
@Produces @TestQualifier
public Object create(InjectionPoint ip) {
if(something) {
return "a String";
} else {
return Integer.valueOf(42);
}
}
, но при использовании этого производителя, я всегда получить ошибку в followin ситуации:
@Named("test")
public class TestComponent {
...
@Inject public void setA(@TestQualifier String stringValue) {
...
@Inject public void setB(@TestQualifier Integer integerValue) {
Он работает только тогда, когда метод создания производителя имеет ожидаемый тип в сигнатуре метода:
public class TestProducer {
@Produces @SpringBean
public String create(InjectionPoint ip) {
Теперь строка string вводится правильно, но у меня нет способа генерировать целое число из метода-производителя. Но это именно то, чего я хочу избежать, поскольку сам производитель должен быть полностью общим.
Я делаю что-то неправильно или нет способа добиться желаемого поведения?
Какая ошибка? – Bozho 2010-11-29 12:13:29
@Bozho: У меня нет кода здесь прямо сейчас, но это что-то вроде «невозможно разрешить соответствующий объект». При использовании отладчика я также могу убедиться, что сам метод производителя вообще не вызван. – perdian 2010-11-29 14:58:54