Spring boot(四)-事件监听的4种实现方式

1、添加监听事件

运行主类:

SpringApplication.run(EventDemoApplication.class, args);
SpringApplication application = new SpringApplication(EventDemoApplication.class);
//添加监听事件
application.addListeners(new MyApplicationListener());
ConfigurableApplicationContext context = application.run(args);//启动时需要交给spring容器
//发布事件
context.publishEvent(new MyApplicationEvent(new Integer(12)));
context.close();
事物MyApplicationEvent类:
public class MyApplicationEvent extends ApplicationEvent {
    public MyApplicationEvent(Object source) {
        super(source);
    }
}
public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {
//    @Override
//    public void onApplicationEvent(ApplicationEvent applicationEvent) {
//        System.out.println("接收到了事件"+applicationEvent.getClass());
//    }

    @Override//是上面类的子类
    public void onApplicationEvent(MyApplicationEvent myApplicationEvent) {
//        System.out.println("接收到了事件"+myApplicationEvent.getClass());
//        System.out.println("接收到了事件yuan="+myApplicationEvent.getSource());
    }
}

2、使用@Component注解将该类装载入spring容器中

//@Component 第二种方式
public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {
//    @Override
//    public void onApplicationEvent(ApplicationEvent applicationEvent) {
//        System.out.println("接收到了事件"+applicationEvent.getClass());
//    }

    @Override//是上面类的子类
    public void onApplicationEvent(MyApplicationEvent myApplicationEvent) {
//        System.out.println("接收到了事件"+myApplicationEvent.getClass());
//        System.out.println("接收到了事件yuan="+myApplicationEvent.getSource());
    }
}

3、创建MyApplicationListener 类

public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {

    @Override//是上面类的子类
    public void onApplicationEvent(MyApplicationEvent myApplicationEvent) {
//        System.out.println("接收到了事件"+myApplicationEvent.getClass());
//        System.out.println("接收到了事件yuan="+myApplicationEvent.getSource());
    }

然后在application.properties中配置监听

#context.listener.classes=com.boot.event.eventdemo.MyApplicationListener  --第三种方式-
MyApplicationListener类的路径

4、创建HandlerEvent类

@Component
public class HandlerEvent {
    @EventListener//第四种
    public  void  handlerEvent(MyApplicationEvent myApplicationEvent){
        System.out.println("接收到了事件"+myApplicationEvent.getClass());
        System.out.println("接收到了事件yuan="+myApplicationEvent.getSource());
    }
    @EventListener
    public  void  handlerEvent1(MyApplicationEvent myApplicationEvent){
        System.out.println("接收到了事件"+myApplicationEvent.getClass());
        System.out.println("接收到了事件yuan="+myApplicationEvent.getSource());
    }
}

 

posted @ 2019-04-22 21:37  AlexZS  Views(430)  Comments(0)    收藏  举报