`

spring中事件监听器用法

阅读更多

 

直接上代码看用法:

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

/**
 * spring启动监听器类
 * @author zhaoxing
 * @version Id: ListenerBusiness.java, v 0.1 2017/4/27 15:13 zhaoxing Exp $$
 */
@Slf4j
@Component
public class ListenerBusiness implements ApplicationListener<ContextRefreshedEvent> {


    @Override
    public void onApplicationEvent(ContextRefreshedEvent evt) {
        /**
         * 在web项目中(spring mvc),系统会存在两个容器,一个是root application context ,
         * 另一个就是我们自己的 projectName-servlet context(作为root application context的子容器)。
         * 这种情况下,就会造成onApplicationEvent方法被执行两次。为了避免这种问题,
         * 我们可以只在root application context初始化完成后调用逻辑代码,其他的容器的初始化完成,则不做任何处理
         */
        if (evt.getApplicationContext().getParent() == null) {
            doBusiness();
        }
    }

    public void doBusiness(){
        log.info("启动监听类开始启动。。。。");
        // do other business
    }
}

 

其中 ApplicationListener<extends ApplicationEvent>  是spring框架中用来实现的监听器接口,泛型中指定监听器监听的事件。接口中只有一个接口方法,用来供接口实现类在监听到对应事件后执行业务逻辑处理方法。

 

相应源码如下:

/**
 * spring框架中一个用来实现的事件监听器,基于标准 java.util.EventListener接口(观察者设计模式)
 *
 * @param <E> 监听的事件类型,是 ApplicationEvent的子类
 */
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {

    /**
     * 监听到特定事件后要执行的业务处理方法.
     * @param event the event to respond to
     */
    void onApplicationEvent(E event);

}

/**
 * 当应用启动或者刷新时(gets initialized or refreshed )触发该事件.
 */
public class ContextRefreshedEvent extends ApplicationContextEvent {

 

 

 

分享到:
评论

相关推荐

    使用Spring事件机制实现异步的方法

    在使用Spring事件机制实现异步的方法时,通常需要将事件监听器添加到ApplicationContext中。在上面的代码中,使用@SpringBootApplication的addListeners方法将MyListener添加到ApplicationContext中。 使用@Event...

    spring 事件监听 3种方式

    本篇文章将详细介绍Spring事件监听的三种方式:基于接口的监听器、基于类的监听器以及基于注解的监听器。 ### 1. 基于接口的监听器(ApplicationListener) **接口定义:** Spring提供了`ApplicationListener`接口...

    spring中监听事件

    在`SimpleApplicationEventMulticaster`中,`multicastEvent`方法会遍历所有监听器,根据监听器的类型和事件类型进行匹配,然后调用对应的处理方法。 为了实现事件监听,我们还可以自定义`ApplicationListener`实现...

    深入探索Spring事件监听机制:技术与应用

    首先,事件(ApplicationEvent)是Spring框架中事件的核心。Spring内置了一些预定义的事件类型,如ContextRefreshedEvent、ContextStartedEvent、ContextStoppedEvent和ContextClosedEvent,它们分别对应于Spring...

    Spring boot通过HttpSessionListener监听器统计在线人数的实现代码

    - 使用`@WebListener`注解标注监听器类,以确保监听器可以被Spring boot自动检测并使用。 - 如果是在传统的Java Web应用中,则需要在web.xml文件中配置监听器,如文件内容所示,使用`&lt;listener&gt;`标签指定监听器类的...

    spring的监听器和缓存.docx

    在Spring Boot中,监听器是用来响应特定事件的组件,例如Web应用程序的启动和关闭。`MyListener`类实现了`ServletContextListener`接口,这个接口有两个主要方法:`contextInitialized`和`contextDestroyed`。当Web...

    Spring的ApplicationEvent事件和监听器的测试Demo

    监听器将接收到`ApplicationEvent`的实例,并在其`onApplicationEvent`方法中处理事件。 ```java @Component public class CustomEventListener implements ApplicationListener&lt;CustomEvent&gt; { @Override public...

    spring的Applicationcontext对事件的监听,实现类似MQ的效果

    然后,你需要定义一个监听器接口,该接口通常会包含一个方法来处理特定的事件。这个接口可以使用`ApplicationListener`接口或者自定义的监听器接口,如下所示: ```java public interface CustomEventListener { ...

    event.rar-Spring事件监听机制

    事件源是触发事件的组件,可以通过`ApplicationEvent`的构造函数传入,并在`ApplicationEvent`的`getSource()`方法中获取。 8. **非Spring管理组件的监听** 即使某个组件不是由Spring管理的,也可以通过`...

    Spring监听器及定时任务实现方法详解

    通过示例代码,我们将展示如何使用Spring监听器和定时任务来实现批处理任务的执行。 Spring监听器 在Spring框架中,监听器是指实现ServletContextListener接口的类,用于监听ServletContext的生命周期事件。监听器...

    spring监听器共20页.pdf.zip

    Spring监听器是Spring框架中的一个重要组成部分,主要用于监听和响应应用上下文或Bean的生命周期事件。在Spring中,监听器是通过实现特定接口或者继承抽象类来定义的,这些接口包括ApplicationContextAware、...

    Web项目中使用Spring, 使用 Spring 的器监听器 ContextLoaderListener.docx

    【Spring在Web项目中的应用】 ...同时,通过监听器`ContextLoaderListener`,可以在Web容器启动时自动加载Spring配置,确保在整个Web应用程序生命周期中,Service层和其他Spring管理的bean都可以正确地被创建和管理。

    Spring事件管理

    除了事件本身,`ApplicationEvent`还有一个`ApplicationContext`的引用,称为事件上下文,可以在事件处理方法中获取到。这在需要访问其他bean或者共享信息时非常有用。 7. **局部事件(Local Events)** 从Spring...

    Spring ApplicationListener监听器用法详解

    本文详细地介绍了Spring ApplicationListener监听器的用法,包括如何实现监听器、如何将监听器加入到Spring容器中、如何在Spring容器中发布事件等内容,对大家的学习或者工作具有一定的参考学习价值。

    详解Spring事件驱动模型

    Spring默认使用`SimpleApplicationEventMulticaster`,它维护了一个监听器列表,当`multicastEvent`方法被调用时,会遍历列表并调用每个监听器的`onApplicationEvent`方法。 3. `ApplicationContext`:它是Spring的...

    spring事件的例子

    在Spring框架中,事件处理是一种重要的组件间通信方式。它允许一个对象在完成特定操作后,...通过创建自定义事件、发布事件、实现或注解监听器,我们可以有效地在系统组件之间传递信息,提升代码的可读性和可维护性。

    spring 监听器浅析.docx

    首先,Spring监听器是基于事件驱动模型的,这种模式在多线程和分布式系统中非常常见。在Spring中,当一个特定的事件发生时,如bean的初始化或销毁,上下文的启动或关闭等,Spring会通过发布事件(publishEvent)来...

    精品专题(2021-2022年收藏)spring项目中监听器作用.doc

    在Spring项目中,监听器(Listener)扮演着关键的角色,特别是在Web应用程序的上下文管理方面。本文将深入探讨Spring框架中的监听器,特别是`ContextLoaderListener`的作用及其配置。 `ContextLoaderListener`是...

Global site tag (gtag.js) - Google Analytics