1. 事件对象
继承 ApplicationEvent (org.springframework.context.ApplicationEvent)类
@Data
@EqualsAndHashCode(callSuper = false)
public class HouseEvent extends ApplicationEvent {
// 自定义消息
private HouseMessage message;
public HouseEvent(Object source, HouseMessage message) {
super(source);
this.message = message;
}
}
2. 事件发布
实现 ApplicationEventPublisherAware (org.springframework.context.ApplicationEventPublisherAware)接口
@Component
public class EventPublisher implements ApplicationEventPublisherAware {
private ApplicationEventPublisher applicationEventPublisher;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
// 发布事件消息;@Async异步处理
@Async
public void publisher(HouseMessage message) {
applicationEventPublisher.publishEvent(new HouseEvent (this, message));
}
}
3. 事件监听
实现 ApplicationListener (org.springframework.context.ApplicationListener)接口
@Component
public class HouseListener implements ApplicationListener<HouseEvent> {
// @Autowired 注入其他组件,用于业务处理
@Override
public void onApplicationEvent(HouseEvent event) {
HouseMessage message = event.getHouseMessage();
// 监听到事件,处理业务
// ...
}
}