spring 事件

applicationContext 的事件机制是观察者设计模式,通过ApplicationEvent 类,和ApplicationListener 接口,可以实现ApplicationContext 的事件处理,如果容器中有一个ApplicationListener Bean每当ApplicationContext发布ApplicationEvent时,ApplicationListener Bean将自动被触发:

Spring 内置事件:

  • ContextRefreshedEvent:当ApplicationContext初始化或者刷新时触发该事件。
  • ContextClosedEvent:当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。
  • RequestHandleEvent:在Web应用中,当一个http请求(request)结束触发该事件。
  • ContestStartedEvent:Spring2.5新增的事件,当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件。
  • ContestStopedEvent:Spring2.5新增的事件,当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件。
  • SessionConnectedEvent 为WebSocket 功能服务
  • SessionConnectEvent 为WebSocket 功能服务
  • SessionDisconnectEvnet 为WebSocket 功能服务

例1

监听当spring容器的启动

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;


@Component
public class SpringRefreshedEventListener implements ApplicationListener<ContextRefreshedEvent> {
    private final Logger logger = LoggerFactory.getLogger(SpringRefreshedEventListener.class);


    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        logger.debug("spring 容器已经就绪。。。。");
    }
}

例2:

发布事件:

//自定义事件

import org.springframework.context.ApplicationEvent;

public class MyEvent extends ApplicationEvent {

    public MyEvent(Object source) {
        super(source);
    }

}

//发布自定义事件
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class MyEventPublisher implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    public void publish(){
        MyEvent myEvent = new MyEvent(null);
        applicationContext.publishEvent(myEvent);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }


}

例3

发布事件:

Publisher类实现 org.springframework.context.ApplicationEventPublisherAware 接口

import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.stereotype.Component;


@Component
public class MyEventPublisherII implements ApplicationEventPublisherAware {

    private ApplicationEventPublisher applicationEventPublisher;

    public void publish(){
        MyEvent myEvent = new MyEvent(null);
        applicationEventPublisher.publishEvent(myEvent);
    }

    @Override
    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
        this.applicationEventPublisher = applicationEventPublisher;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring事件存储指的是在Spring框架中实现事件管理和存储,以便在系统中进行事件的发布和订阅。它允许不同的组件之间进行解耦,以实现更好的系统可扩展性和灵活性。 Spring提供了一个事件体系结构,通过编写事件发布者和事件监听器,可以在应用程序中实现事件的发布和处理。事件发布者负责发布事件,而事件监听器负责处理该事件。 在实际应用中,Spring事件存储通常与其他持久化技术结合使用,以便将事件存储到持久化存储介质中,如数据库、消息队列或日志文件等。这样做的好处是可以跟踪和记录系统中发生的事件,并允许其他组件在需要时获取和处理这些事件Spring事件存储的实现方式可以基于数据库事务或非事务进行。对于基于数据库的实现方式,可以使用Spring提供的JDBC或ORM框架(如Hibernate)进行数据存储。对于非事务性的实现方式,可以使用消息队列或日志文件来存储事件。 除了事件存储,Spring还提供了其他一些功能来支持事件管理和处理,例如事件过滤、事件监听器排序和异步事件处理等。这些功能可以根据应用程序的需要进行配置和使用,以满足不同业务场景中的需求。 总而言之,Spring事件存储是一种利用Spring框架提供的事件模型和持久化技术来管理和存储事件的机制。它可以帮助系统实现解耦和灵活性,并提供跟踪、记录和处理事件的能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值