5

我想构建基于事件泛型类型的事件处理。

活动类别:

public class PushNotificationStoreEvent<T extends Push> extends ApplicationEvent {
    private static final long serialVersionUID = -3791059956099310853L;

    public T push;

    public PushNotificationStoreEvent(Object source, T push) {
        super(source);
        this.push = push;
    }
}

Push是类的标记接口:PushNotificationNewPushNotificationFail.

听众:

@Async
@EventListener
public void storeNewPush(PushNotificationStoreEvent<PushNotificationNew> event) {
    pushNewRepoService.save(event.push);
}
@Async
@EventListener
public void storeFailPush(PushNotificationStoreEvent<PushNotificationFail> event) {
    pushFailRepoService.save(event.push);
}

PushNotificationStoreEvent<PushNotificationNew>问题:听众之间没有区别PushNotificationStoreEvent<PushNotificationFail>

这意味着,所有事件PushNotificationStoreEvent都由所有侦听器处理。

我可以通过为每个案例创建单独的事件类或使用一个侦听器并选择正确的操作instanceof来解决这个问题。event.push也许您知道更好的解决方案?

4

0 回答 0