Springboot中监听器的使用

这篇主要是讲解了Springboot中使用监听器,配置所需要的依赖包(POM.xml)放在下面,以保证不会出现依赖包出错这种情况。

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

都是依赖于上述的包来做的

第一种方法是配置类的方式

需要配置一个事件类和一个事件监听类,然后在application中初始化两个类,就可以正使用监听器,来监听方法了,直接演示

配置事件类,如下所示(必须继承与ApplicationEvent,表明这是一个事件类)

import org.springframework.context.ApplicationEvent;

//定义一个自定义事件继承ApplicationEvent类,才能够被监听到

public class Controll extends ApplicationEvent {
    public Controll(Object source) {
        super(source);
    }
}

配置监听类:如下所示(必须实现接口ApplicationListener然后重写当中的监听事件方法onApplicationEvent)

public class MyapplicationListener implements ApplicationListener<Controll> {
    public void  onApplicationEvent(Controll event){
        System.out.println("接收到事件"+event.getClass());
    }
}

配置测试类

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(DemoApplication.class);
        //配置事件监听器
       application.addListeners(new MyapplicaitonListener());
        ConfigurableApplicationContext context = application.run(args);
        //发布事件
        context.publishEvent(new Controll(new Object()));
    }
}

我们运行一下,看一下测试出来的结果

我们在当中可以看到,其实就是在application中挂载事件监听器,所以就new一个监听器在当中,然后进行,先进行事件的监听,就先暴露监听器,然后当事件发布的时候,就会对事件开始监听,监听到触发当中的事件

第二种:使用@Component和@EventListener来监听

因为刚刚使用的配置的监听事件类中,我们使用的采用了泛型的形式,只接受了一个Controller的事件类,但事实上,当我们使用@EventListener就不用在实现接口了,就可以接受任意类型的事件进来,当触发了,我们就调用,现在我们尝试一下(注意:我把事件类也注释掉,看看会监听到什么)

配置监听事件类

@Component
public class MyapplicaitonListener {

    @EventListener
    public void onApplicationEvent(Object event) {
        System.out.println("接收到事件"+event.getClass());
    }
}

配置测试类

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(DemoApplication.class);
        //配置事件监听器
        ConfigurableApplicationContext context = application.run(args);
        //发布事件
        context.publishEvent(new Controll(new Object()));

    }
}

有些小伙伴可能有疑问,为什么application.addListeners(new MyapplicaitonListener());被删掉了,其实这是配置这两个注解之后,这行就被代替了,已经没用了,所以去除了,不过你添加上也是会报错的!

测试结果如下

看结果就知道,监听到很多的事件,所以我们就可以通过这样的监听器,来对我们的事件进行监听之后在做操作,这在公司的业务上是经常使用到的,记住方法就行。

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈Demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值