Учитывая следующий интерфейс:
public interface MyRunnable {
public MyResponse run(int x);
}
Он реализован двумя @Stateless
bean-компонентами:
@Stateless
public class Bean1 implements MyRunnable {
public MyResponse run(int x) {
// some logic
}
}
@Stateless
public class Bean2 implements MyRunnable {
public MyResponse run(int x) {
// some logic
}
}
Теперь я хочу запустить один или другой компонент в зависимости отсостояние.Каков наилучший способ добиться этого?
Это то, что я безуспешно пытался:
@Stateless
@LocalBean
public class MainBean {
@Inject
private Bean1 bean1;
@Inject
private Bean2 bean2;
public void someMethod(int y) {
MyRunnable runnable = null;
if (y == 1)
runnable = bean1;
else
runnable = bean2;
runnable.run(5);
}
}
Код компилируется, но он выдает (в Wildfly) ошибку при запуске:
WELD-001408: Неудовлетворенные зависимости для типа Bean1 с квалификаторами @ По умолчанию
ОБНОВЛЕНИЕ Что-то, что я заметил;если я удалю implements MyRunnable
из бобов, ошибок при запуске не будет.