SpringBoot事件ApplicationEvent類

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();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章