похоже, что у меня отсутствует базовая концепция, но даже после часов чтения я как-то застрял прямо сейчас.CDI: получить конкретную реализацию интерфейса
дал следующие настройки: EE7 на Glassfish 4, Arquillian (псевдо) Код:
Несколько Реализации для интерфейса:
public interface Activity {
public void doFoo();
}
@Stateless
public class StockActivity implements Activity {
@Override
public void doFoo(){
...
}
}
@Stateless
public class OrderActivity implements Activity {
@Override
public void doFoo(){
...
}
public void doSomeOtherStuff(){
...
}
}
Выбор в бизнес-кода, как
@Any
@Inject
Instance<Activity> activities;
До сих пор все хорошо работает ... но теперь я хочу вызвать метод doSomeOtherStuff в Arquillian-Test, который не определен на интерфейсе. Я просто не могу найти способ получить экземпляр OrderActivity Bean
(я бы хотел, чтобы избежать введения «жестко заданных» спецификаторов, поскольку они будут использоваться только для тестов. Также конкретные реализации жить в своих проектах и получать упакованные на одного клиента, поэтому я также не могу использовать один «enumifed» Qualifier.)
Любые идеи?
Почему вы вводите операцию, если вам нужна OrderActivity? Inject OrderActivity, и вы сможете вызвать его методы. –
, потому что я не могу прямо вставлять OrderActivity в данный (уже упрощенный) сценарий. – Torsten