Spring 事件记录
⒈定义一个事件,继承 ApplicationEvent 接口。
1 package cn.coreqi.eventdemo.event; 2 3 import org.springframework.context.ApplicationEvent; 4 5 public class ProjectEvent extends ApplicationEvent { 6 private String id; 7 private String projectStatus; 8 9 public String getId() { 10 return id; 11 } 12 13 public String getProjectStatus() { 14 return projectStatus; 15 } 16 17 public ProjectEvent(Object source, String id, String projectStatus){ 18 super(source); 19 this.id = id; 20 this.projectStatus = projectStatus; 21 } 22 }
2.定义一个监听者,实现 ApplicationListener,以下二选其一,需要注意Spring的版本,以1为优先选项。
1.
1 package cn.coreqi.eventdemo.listener; 2 3 import cn.coreqi.eventdemo.event.ProjectEvent; 4 import org.springframework.context.ApplicationListener; 5 import org.springframework.stereotype.Component; 6 7 @Component 8 public class ProjectListener implements ApplicationListener<ProjectEvent> { 9 @Override 10 public void onApplicationEvent(ProjectEvent event) { 11 System.out.println("接收到的项目id: " + event.getId()); 12 System.out.println("接受到的项目类型: " + event.getProjectStatus()); 13 //开始业务处理 14 } 15 }
2.
1 @EventListener 2 public void registerProjectEventListener(ProjectEvent event){ 3 System.out.println("这是第二种监听方式"); 4 System.out.println("接收到的项目id: " + event.getId()); 5 System.out.println("接受到的项目类型: " + event.getProjectStatus()); 6 //开始业务处理 7 }
3.发布【这里是手动发布,一般是以quartz等任务框架去推动发布】
1 public static void main(String[] args) { 2 //SpringApplication.run(ApplicationMain.class, args); 3 ConfigurableApplicationContext context = SpringApplication.run(ApplicationMain.class, args); 4 context.publishEvent(new ProjectEvent(context,"7777","开始")); 5 }
【可选】4.异步
1 package cn.coreqi.eventdemo.config; 2 3 import org.springframework.context.annotation.Bean; 4 import org.springframework.context.annotation.Configuration; 5 import org.springframework.context.event.ApplicationEventMulticaster; 6 import org.springframework.context.event.SimpleApplicationEventMulticaster; 7 import org.springframework.core.task.SimpleAsyncTaskExecutor; 8 9 @Configuration 10 public class AsynchronousSpringEventsConfig { 11 12 @Bean(name = "applicationEventMulticaster") 13 public ApplicationEventMulticaster simpleApplicationEventMulticaster() 14 { 15 SimpleApplicationEventMulticaster eventMulticaster = new SimpleApplicationEventMulticaster(); 16 eventMulticaster.setTaskExecutor(new SimpleAsyncTaskExecutor()); //不是最优选择 17 return eventMulticaster; 18 } 19 20 }
作者:奇
出处:https://www.cnblogs.com/fanqisoft/p/16086953.html
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
分类:
Spring
如果文章内容对您有所帮助,欢迎赞赏.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-04-01 修改Spring Social默认提交地址
2019-04-01 OAuth协议简介