У меня есть несколько классов, которые наблюдают за некоторым событием CDI. Можно ли объявить, какой класс следует использовать в разных случаях?Выберите определенного наблюдателя событий CDI
Например, у меня есть класс, который производят события:
class Producer
{
@Inject
private Event<SomeEvent> event;
public void fire()
{
event.fire(new SomeEvent());
}
}
И у меня есть два потребительских класса:
class ConsumerA
{
public void onEvent(@Observes SomeEvent event);
}
class ConsumerB
{
public void onEvent(@Observes SomeEvent event);
}
Как я могу использовать ConsumerA
экземпляры в одном случае и ConsumerB
экземпляры в другом случае?
мне нужно что-то вроде этого:
class UseCaseA
{
@Inject
Producer producer;
@Inject
ConsumerA consumerA;
public void doWork()
{
producer.fire(); //consumerA.onEvent() will be called
}
}
class UseCaseB
{
@Inject
Producer producer;
@Inject
ConsumerB consumerB;
public void doWork()
{
producer.fire(); //consumerB.onEvent() will be called
}
}
Я хотел бы избежать, используя имя Producer для этого, если это не имеет бизнес-значение, которое неизбежно. Методы и поля производителя в CDI являются дополнением к логике создания бонусов контейнера. – redge