SpringBoot中ApplicationEvent的使用步骤详解
介绍
ApplicationEvent类似于MQ,是Spring提供的一种发布订阅模式的事件处理方式。相对于MQ,其局限在于只能在同一个Spring容器中使用。
使用步骤
封装消息
将要发送的内容,封装成一个bean,这个bean需要继承ApplicationEvent类。
package com.example.event; import lombok.Getter; import lombok.Setter; import lombok.ToString; import org.springframework.context.ApplicationEvent; /** * @Description: 封装消息 * @author: zeal * @date: 2024年04月09日 10:22 */ @Setter @Getter @ToString public class UserLoginEvent extends ApplicationEvent { private Integer userId; private String token; public UserLoginEvent(Object source,Integer userId,String token) { super(source); this.userId=userId; this.token=token; } }
推送消息
推送消息时,注入ApplicationEventPublisher或ApplicationContext均可,调用publishEvent()方法。
package com.example.event; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @Description: 消息推送 * @author: zeal * @date: 2024年04月09日 10:26 */ @RestController @RequestMapping("event") public class UserLoginController { @Autowired private ApplicationContext applicationContext; @RequestMapping("/push") public void pushEvent(){ UserLoginEvent userLoginEvent=new UserLoginEvent(this,001,"zsaf"); applicationContext.publishEvent(userLoginEvent); } }
监听消息
此步骤相当于MQ的消费者,实现ApplicatonListener类,通过泛型来设置消息类型。
package com.example.event; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; /** * @Description: 监听消息 * @author: zeal * @date: 2024年04月09日 10:25 */ @Component public class UserLoginEventListener implements ApplicationListener<UserLoginEvent> { @Override public void onApplicationEvent(UserLoginEvent event) { System.out.println("收到消息:"+event.toString()); } }
通过注解实现监听
package com.example.event; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; /** * @Description: 监听消息 * @author: zeal * @date: 2024年04月09日 10:25 */ @Component public class UserLoginEventListener{ @EventListener public void onApplicationEvent(UserLoginEvent event) { System.out.println("收到消息:"+event.toString()); } }
到此这篇关于SpringBoot中ApplicationEvent的用法的文章就介绍到这了,更多相关SpringBoot ApplicationEvent用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
java多态性中的Overload和Override区别详解
这篇文章主要介绍了java多态性中的Overload和Override区别详解,重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现,需要的朋友可以参考下2023-07-07idea使用spring Initializr 快速搭建springboot项目遇到的坑
这篇文章主要介绍了idea使用spring Initializr 快速搭建springboot项目遇到的坑,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-11-11
最新评论