Springboot中监听器的使用

发布于:2022-12-26 ⋅ 阅读:(354) ⋅ 点赞:(0)

这篇主要是讲解了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());被删掉了,其实这是配置这两个注解之后,这行就被代替了,已经没用了,所以去除了,不过你添加上也是会报错的!

测试结果如下

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

 


网站公告

今日签到

点亮在社区的每一天
去签到