Spring事件监听实现

1、代码结构
在这里插入图片描述
2、pom文件引入必要jar包

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.3.RELEASE</version>
</dependency>

3、业务代码

  • 配置类
@Configuration
@ComponentScan("com.qing.zhao.event")
public class EventConfigration {
}
  • 自定义事件类
public class MyEvent extends ApplicationEvent {
    public MyEvent(Object source, String message) {
        super(source);
        System.out.println("自定义事件:"+message+": "+source);
    }

}
  • 监听类
@Component
public class MyEventListener implements ApplicationListener<ApplicationEvent> {
    /**
     * 当容器中发布ApplicationEvent事件时,该方法就会被触发
     * @param applicationEvent
     */
    @Override
    public void onApplicationEvent(ApplicationEvent applicationEvent) {
        //省略相关业务处理逻辑
        if (applicationEvent instanceof MyEvent){
            System.out.println("我监听到了自定义事件:"+applicationEvent.getSource());
        }else {
            System.out.println("我监听都了Spring默认事件"+applicationEvent.getSource());
        }
    }
}
  • 事件发布类
@Component
public class EventHandle {
    @Autowired
    private ApplicationContext applicationContext;

    public void sendEvent(String message){
        MyEvent myEvent = new MyEvent(this, message);
        applicationContext.publishEvent(myEvent);
    }
}

  • 测试类
public class EventTest {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(EventConfigration.class);
        EventHandle eventHandle = applicationContext.getBean(EventHandle.class);
        eventHandle.sendEvent("传参");
        applicationContext.close();
    }
}

4、运行结果
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章