提问人:mattsmith5 提问时间:11/11/2023 更新时间:11/11/2023 访问量:49
Java ApplicationEvents:@EventListener注解和 ApplicationListener 接口的区别
Java ApplicationEvents: Difference between @EventListener annotation and ApplicationListener interface
问:
我正在使用 Java ApplicationEvents 发布,然后订阅、监听事件。注解和接口有什么区别。有什么区别,还是相同的功能?@EventListener
ApplicationListener
资源: https://reflectoring.io/spring-boot-application-events-explained/
方法1:
@Component
class UserRemovedListener {
@EventListener(condition = "#event.name eq 'reflectoring'")
void handleConditionalListener(UserRemovedEvent event) {
// handle UserRemovedEvent
}
}
方法2:
@Component
class UserCreatedListener implements ApplicationListener<UserCreatedEvent> {
@Override
public void onApplicationEvent(UserCreatedEvent event) {
// handle UserCreatedEvent
}
}
答:
1赞
Kenny Tai Huynh
11/11/2023
#1
根据文档,它们几乎相同
有两种方法可以定义侦听器。我们可以使用 @EventListener 注解或实现 ApplicationListener 接口。无论哪种情况,侦听器类都必须由 Spring.Blockquote 管理
但是,如果使用 @EvenListener,它将自动注册 ApplicationListener。全文如下:
从 Spring 4.1 开始,现在可以简单地用 @EventListener 注释托管 Bean 的方法,以自动注册与方法签名匹配的 ApplicationListener
在官方网站上,文档还解释说,注释使其更易于使用+更短。链接应为:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/event/EventListener.html
希望这有帮助。
评论
0赞
mattsmith5
11/12/2023
那么Spring Boot文档中最新的官方推荐方式是什么?注解?然后我可能会重构它,谢谢
评论