当前位置: 代码迷 >> 综合 >> ApplicationEvent和ApplicationListener
  详细解决方案

ApplicationEvent和ApplicationListener

热度:48   发布时间:2024-02-06 06:55:17.0

1.建立监听的类 继承ApplicationEvent

public class ChannelMsgEvent extends ApplicationEvent {private List<TDeviceRealdataDTO> datas;public ChannelMsgEvent(Object source, List<TDeviceRealdataDTO> datas) {super(source);this.datas = datas;}public List<TDeviceRealdataDTO> getDatas() {return datas;}public void setDatas(List<TDeviceRealdataDTO> datas) {this.datas = datas;}
}

2.建立监听器


@Component
@Slf4j
public class WaterloggingListener  implements ApplicationListener<ChannelMsgEvent> {@Resourcepublic RedisTemplate redisTemplate;@Overridepublic void onApplicationEvent(ChannelMsgEvent event) {List<TDeviceRealdataDTO> tDeviceRealdataDTOList = event.getDatas();//可以对监听到的数据进行操作}}

3.通过ApplicationContext将数据丢给监听器


@Slf4j
public class RainfallDataSyncTask implements SimpleJob {@Autowiredprivate ApplicationContext context;@Overridepublic void execute(ShardingContext shardingContext) { List<TDeviceRealdataDTO> dtos = getData(array);if (CollUtil.isNotEmpty(dtos)) {//丢出数据context.publishEvent(new ChannelMsgEvent(this, dtos));} else {log.info("查询数据为空");}}}