当前位置: 首页 > news >正文

Spring中事件监听器

实现ApplicationListener接口

@Configuration
public class A48 {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(A48.class);context.getBean(MyService.class).doBusiness();context.close();}// 定义任务static class MyEvent extends ApplicationEvent{public MyEvent(Object source) {super(source);}}@Component@Slf4jstatic class MyService{@Resourceprivate ApplicationEventPublisher publisher;public void doBusiness(){log.info("主线业务");publisher.publishEvent(new MyEvent("myservice发送的事件"));}}@Component@Slf4jstatic class SmsApplicationListener implements ApplicationListener<MyEvent>{@Overridepublic void onApplicationEvent(MyEvent event) {log.info("支线任务");}}
}

@EventListener注解

@Component
@Slf4j
static class SmsApplicationListener{@EventListenerpublic void listener(MyEvent event){log.info("发送短信....");}
}

@EventListener结合线程池异步

@Component
@Slf4j
static class SmsApplicationListener{@EventListenerpublic void listener(MyEvent event){log.info("发送短信....");}
}// 线程池异步发送事件
@Bean
public ThreadPoolTaskExecutor executor(){ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(3);executor.setMaxPoolSize(10);executor.setQueueCapacity(100);return executor;
}@Bean
public SimpleApplicationEventMulticaster applicationEventMulticaster(ThreadPoolTaskExecutor executor){SimpleApplicationEventMulticaster multicaster = new SimpleApplicationEventMulticaster();multicaster.setTaskExecutor(executor);return multicaster;
}

自定义listener进行解析

public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(A48.class);SmsService bean = context.getBean(SmsService.class);for (Method method : SmsService.class.getMethods()) {if(method.isAnnotationPresent(MyListener.class)){ApplicationListener listener = new ApplicationListener() {@Overridepublic void onApplicationEvent(ApplicationEvent event) {try {method.invoke(bean,event);} catch (Exception e) {e.printStackTrace();}}};context.addApplicationListener(listener);}}context.close();
}@Component
@Slf4j
static class SmsService{@MyListenerpublic void listener(ApplicationEvent event){log.info("发送短信....");}
}
http://www.lryc.cn/news/400454.html

相关文章:

  • 案例|LabVIEW连接S7-1200PLC
  • 正点原子STM32(基于HAL库)6
  • flutter Android端权限
  • ant design form动态增减表单项Form.List如何进行动态校验规则
  • 7.16做题总结
  • unity使用 MQTT复现plant simulate仿真
  • MATLAB激光通信和-积消息传递算法(Python图形模型算法)模拟调制
  • 初识HTML
  • 基于Rspack实现大仓应用构建提效实践|得物技术
  • 什么是MOW,以bitget钱包为例
  • pytorch说明
  • AI语音机器人是否可以设计开放式问题
  • ModuleNotFoundError: No module named
  • 【操作系统】进程管理——用信号量机制解决问题,以生产者-消费者问题为例(个人笔记)
  • 算法刷题笔记 KMP字符串(C++实现,并给出了求next数组的独家简单理解方式)
  • SpringCloud架构师面试
  • C语言 | Leetcode C语言题解之第228题汇总区间
  • 入职前回顾一下git-01
  • this指向解析
  • 学习小记-Nacos的服务注册与发现原理
  • 视频号矩阵系统源码,实现AI自动生成文案和自动回复私信评论,支持多个短视频平台
  • [Spring] SpringBoot基本配置与快速上手
  • tomcat的优化、动静分离
  • Python与自动化脚本编写
  • 树与二叉树
  • SpringBoot+Vue实现简单的文件上传(Excel篇)
  • 科研绘图系列:R语言金字塔图(pyramid plot)
  • Tomcat多实例
  • 前端Vue组件化实践:自定义加载组件的探索与应用
  • 半小时获得一张ESG入门证书【详细中英文笔记一】