我有一个新的 Jakarta EE (Qurakus) 应用程序和一些旧代码,其中有注册事件侦听器的方法。我为事件注册表做了一个包装。现在我需要某种方法来有效地注册大量事件侦听器。它看起来像这样:
@ApplicationScoped
public class EventRegistry {
private Set<Listener<?>> listeners = Collections.synchronizedSet(new HashSet<>());
public void register(Listener l) {
}
public void unregister(Listener l) {
}
}
@ApplicationScoped
public class Listener1 implements Listener<MyEvent> {
@Override
public void onEvent(MyEvent e) {
}
}
所以基本上我需要一种让听众注册的方法。我考虑过使用 Jakarta EE 事件,我在注册表的 PostConstruct 中触发该事件,并在每个侦听器中侦听该事件,然后侦听器自行注册。这是一种保存方法吗?或者如果不通过注入使用侦听器 bean 是否会被破坏?通常还有更好的方法来执行特定 bean 的操作(我将所有侦听器放在一个包中)。