我有一个新的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) {
}
}
所以基本上我需要一种让听众注册的方法.我考虑使用我在注册表的PostConstruct中触发的Jakarta EE事件,并在每个侦听器中侦听它,然后侦听器再注册它自己.这是一种省钱的方法吗?或者,如果不通过注入使用侦听器Bean,它会被销毁吗?此外,通常还有一种更好的方法来为特定的Bean执行操作(我将所有侦听器都放在一个包中).