一、介绍
监听器的简化写法
二、原理
三、使用
@Slf4j
@Component
public class MyTask {
    @EventListener
    public void onApplicationEvent(ApplicationEvent event) {
        if (event instanceof ContextRefreshedEvent) {
            log.info("监听到 ContextRefreshedEvent...");
        }
        if (event instanceof MyEvent) {
            log.info("监听到 MyEvent...");
            MyEvent myEvent = (MyEvent) event;
            System.out.println("时间:" + myEvent.getTime() + " 信息:" + myEvent.getMsg());
        }
    }
}
@Slf4j
@Component
public class MyTask {
    @EventListener
    public void MyEventListener(MyEvent event) {
        log.info("监听到 MyEvent...");
        MyEvent myEvent = (MyEvent) event;
        System.out.println("时间:" + myEvent.getTime() + " 信息:" + myEvent.getMsg());
    }
    @EventListener
    public void ContextRefreshedEventListener(MyEvent event) {
        log.info("监听到 ContextRefreshedEvent...");
    }
}
还可以指定监听事件的类型:
@EventListener(MyEvent.class)
@EventListener({MyEvent.class, ContextRefreshedEvent.class})
四、demo
在前面的基础上,改造listener的写法:
package com.listener.demo.listener;
import com.listener.demo.dto.UserLogDTO;
import com.listener.demo.event.MyLogEvent;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class MyListener {
    @EventListener
    public void onApplicationEvent(MyLogEvent event) {
        UserLogDTO source = event.getSource();
        log.info("监听到:url={},detail={}",source.getUrl(),source.getDetail());
        //其他处理,比如存储日志
    }
}
访问localhost:4444/listenerDemo/user/add?userName=zhangsan&userAccount=zs,控制台也同样打印
![[图解]DDD架构好简单我学会了-学会也没啥用](https://img-blog.csdnimg.cn/direct/9016e93f426d41dd8c1668e4e0f5bdb5.png)


















