【问题标题】:Spring @EventListener with two arguments带有两个参数的 Spring @EventListener
【发布时间】:2018-07-23 07:09:39
【问题描述】:

我正在寻找一种将两个参数传递给@EventListener 的方法。我有一个Event 课程。它看起来像这样:

public class Event {
    String id;
    Date timestamp;
    String data;
    String type;
}

data被序列化了,类型描述了如何反序列化。

目前,我反序列化事件数据,然后通过 `ApplicationEventPublisher 发布反序列化的 EventData 子类实例,如下所示:

public void listen(Event event) throws IOException {
    EventData eventData = converter.toEventData(event);
    eventPublisher.publishEvent(eventData);        
} 

到目前为止,这运行良好,但现在我需要访问我的侦听器中的事件和数据。有没有办法将两个参数传递给@EventListener

【问题讨论】:

    标签: spring spring-boot spring-4 event-sourcing


    【解决方案1】:

    我不认为有办法可以将第二个参数传递给事件侦听器。

    您可以将event 属性添加到由converter 填充的EventData 基类,并使用传递给它的原始参数。

    【讨论】:

    • 使用元组怎么样?我不是最新的java,但是有没有每个人都使用的元组类?
    • @JoshC。我认为事件调度是由EventData 的类完成的,所以应该保持不变。我想如果你可以/会修改你所有的听众,那么你可以使用一个元组。
    • 什么是典型的元组类?
    • 其实我意识到问题是我需要动态创建元组。 EventData 是超类,但我需要广播派生类型以确保传递给正确的处理程序。元组需要使用该派生类型进行实例化。我想我将使用 EventData 类的反向引用...
    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2020-10-01
    • 2012-12-05
    相关资源
    最近更新 更多