1.事件對象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class EventObj implements Serializable {
private String message;
private int number;
}
2.自定義對象裝配
@Data
public class CustomEventConfig extends ApplicationEvent {
private EventObj eventObj;
public CustomEventConfig(Object source, EventObj eventObj) {
super(source);
this.eventObj = eventObj;
}
}
3.監聽對象
@Slf4j
@Service
public class EventListenService {
@Async
@EventListener
public void handleEvent(CustomEventConfig eventConfig){
//監聽 CustomEvent 事件
String message = eventConfig.getEventObj().getMessage();
int number = eventConfig.getEventObj().getNumber();
log.info("---------------->收到第 {} 條信息,內容爲:{}",number,message);
}
}
5.推送監聽的對象
@Service
public class DoEvenService {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void doEvent(){
applicationEventPublisher.publishEvent(new CustomEventConfig(this, new EventObj("永恆花園和紫羅蘭電影今天開播!", 124980)));
}
}
6.調用方法
@Autowired
private DoEvenService doEvenService;
@Test
void contextLoads() {
doEvenService.doEvent();
}