gpt4 book ai didi

java - Spring 的 ApplicationEvent 中的源是什么?

转载 作者:行者123 更新时间:2023-12-03 19:16:18 27 4
gpt4 key购买 nike

在代表 ApplicationEventPublisher 发布的事件的 Spring Framework 类中并被 @EventListener 收听是EventObject <- ApplicationEvent <- PayloadApplicationEvent .

我的问题是什么是不可为空的 source在最初的 EventObject构造函数和所有派生的子类构造函数?

Javadocs 给出了一个相当模糊的解释,它是
“最初发生相关事件的对象”。

它是关联的域实体或发布者服务还是其他?

此外,我很困惑为什么如果 @EventListener 完全需要它?指出
“事件可以是 ApplicationEvent 实例以及任意对象”?

最佳答案

我了解 source成为创建事件的地方。例如,@Service处理从 @Controller 接收的 Web 请求.因此,当您调用 ApplicationEventPublisher.publishEvent() ApplicationEvent 的源参数事件是this , 服务。

public class AwesomeEvent extends ApplicationEvent {
private final String howAwesome;

public AwesomeEvent(Object source, String howAwesome) {
super(source);
this.howAwesome = howAwesome;
}
}

@Service
@RequiredArgsConstructor // because, lazy
public class AwesomeService {
private final ApplicationEventPublisher eventPublisher;

public void awesomeMethod() {
// Do superhero awesome stuff
eventPublisher.publishEvent(new AwesomeEvent(this, "Extremely"));
}
}

关于java - Spring 的 ApplicationEvent 中的源是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60409929/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com