Вам нужно детализировать несколько вещей, и одна из самых важных - это область действия, и в какой момент нужен боб?
Очевидно, что если существует метод наблюдателя, который прослушивает событие этого компонента, а также нуждается в ссылке на этот компонент в параметре наблюдателя, то вы определенно создаете циклическую зависимость, которую вы не можете разрешить, так как события в CDI синхронный по умолчанию (и даже если вы используете fireAsync
, нет никакой гарантии, что к моменту прибытия события CDI поместит компонент в надлежащий контекст)
Я бы решил эту проблему, выполнив инъекцию метода в загруженный ранее компонент, такой как ejbs Singleton
или @ApplicationScoped
, с какой-либо загрузкой в начале, а затем вызвал бы событие оттуда.
Предполагается, что бин загружен ранее:
public class EargerBean {
@Inject
private Event<BeanEvent> event;
@Inject
public void onInjected(Bean bean){
BeanEvent beanEvent ...;
event.fire(beanEvent);
}
}