Spring事件

Spring事件

事件机制

1.事件对象

2.发布事件

3.监听事件

4.异步监听

事件机制

事件机制是基于监听者设计模式的实现,监听者模式包括三个部分:

  • 事件源:具体事件源,用于发布事件
  • 事件对象:封装事件源对象和事件相关信息,用于在事件源和监听器之间传递信息,可以称为事件发布者
  • 事件监听器:监听事件,用于对事件的处理,可以称为事件处理者

Spring 提供了 ApplicationEventPublisher 接口用于发布事件。

可以通过继承 ApplicationEvent 来定义事件对象。

可以通过实现 ApplicationListener<E> 接口来定义事件监听器。

在这里插入图片描述

1.事件对象

项目中,首先定义一个事件对象来封装事件传递的相关信息

// 自定义事件对象
public class MyEvent extends ApplicationEvent{
    /** 自定义事件携带的信息 */
    private final String name;
    
    public MyEvent(Object source, String name) {
        super(source);
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
}
2.发布事件
@Slf4j
@Service
@RequiredArgsConstructor
public class PuslishService {

  /** 注入ApplicationContext用来发布事件 */
  private final ApplicationContext applicationContext;

  public void sendData(String name) {
    applicationContext.publishEvent(new MyEvent(this, name));
  }
}
3.监听事件

监听并处理事件,实现 ApplicationListener 接口

@Slf4j
@Component
public class MyListener implements ApplicationListener<MyEvent> {

    @Override
    public void onApplicationEvent(MyEvent event) {
        String name = event.getName();
        log.info("Listening to an event, name info is {}", name);
    }
}

或者使用 @EventListener 注解;

@Slf4j
@Component
public class MyListener1 {
    @EventListener
    public void processMyEvent(MyEvent event) {
        String name = event.getName();
        log.info("Listening to an event, name info is {}", name);
    }
}
4.异步监听

默认的监听器都是同步处理事件任务的,可以使用@Async 注解来进行异步处理

首先在监听类的方法上加上@Async注解,接着在启动类上加上@EnableAsync注解

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值