Skip to content

Spring监听器的使用

1. 监听器

java
package com.haobai.crm.service.co.ymp.listener;

import com.haobai.crm.service.co.ymp.events.OrderPushEvent;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

/**
 * @author yang
 * @createTime 2025/3/20
 * @since 1.0.0
 */
@Slf4j
@Component
public class OrderPushEventListener implements ApplicationListener<OrderPushEvent> {



    /**
     * Handle an application event.
     *
     * @param event the event to respond to
     */
    @Override
    public void onApplicationEvent(@NotNull OrderPushEvent event) {
        log.info("onApplicationEvent接收到订单推送事件:{}, {}", event.getCoYmpAuditBatchDO(), event.getAuditStatusEnum());


    }

    @EventListener
    public void onOrderPushEvent(@NotNull OrderPushEvent event) {
        log.info("onOrderPushEvent接收到订单推送事件:{}, {}", event.getCoYmpAuditBatchDO(), event.getAuditStatusEnum());


    }

}

2. EventObject

java
package com.haobai.crm.service.co.ymp.events;

import com.haobai.crm.common.enums.workorder.AuditStatusEnum;
import com.haobai.crm.domain.co.ymp.CoYmpAuditBatchDO;
import org.springframework.context.ApplicationEvent;

/**
 * @author yang
 * @createTime 2025/3/20
 * @since 1.0.0
 */
public class OrderPushEvent extends ApplicationEvent {

    private final CoYmpAuditBatchDO coYmpAuditBatchDO;
    private final AuditStatusEnum auditStatusEnum;

    public OrderPushEvent(Object source, CoYmpAuditBatchDO coYmpAuditBatchDO, AuditStatusEnum auditStatusEnum) {
        super(source);
        this.coYmpAuditBatchDO = coYmpAuditBatchDO;
        this.auditStatusEnum = auditStatusEnum;
    }

    public CoYmpAuditBatchDO getCoYmpAuditBatchDO() {
        return coYmpAuditBatchDO;
    }

    public AuditStatusEnum getAuditStatusEnum() {
        return auditStatusEnum;
    }
}

3. 发布事件

java


    @Resource
    private ApplicationEventPublisher publisher;
    
    OrderPushEvent orderPushEvent = new OrderPushEvent(this, coYmpAuditBatchDO, byCode);
    publisher.publishEvent(orderPushEvent);