【发布时间】:2015-04-05 01:24:52
【问题描述】:
我有几个班级观察一些 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 中的生产者方法和字段是对容器的 bean 创建逻辑的添加。
标签: java jakarta-ee dependency-injection cdi java-ee-6