spring Event事件处理

本文介绍如何在Spring Boot应用中使用@Autowired注入ApplicationEventPublisher,并通过@Controller的方法发布Userd类型的事件。同时,展示了如何使用@Component注解的类作为事件监听器,实现事件的异步处理。两个监听方法分别处理不同事件属性。
摘要由CSDN通过智能技术生成

1.在你的Controller注入

    @Autowired
    private ApplicationEventPublisher publisher;

2.然后在你需要发布事件的地方,例如下面这样

    @PostMapping("/selectAll")
    public String selectAll(){
        Userd user = new Userd();
        user.setPassword("fdsf");
        user.setUsername("dfsa");
        //发布事件
        publisher.publishEvent(user);
        return "ss";

3.事件监听

@Component
public class EventHandle {
    //添加此注解可异步执行
    @Async
    //事件监听注解
    @EventListener
    //参数类型要和发布者一致,通过参数类型来监听的
    public void handle(Userd event) throws InterruptedException {
        Thread.sleep(5000);
        System.out.println(event.toString());
    }
    @Async
    @EventListener
    public void handle1(Userd event){
        System.out.println(event.getPassword());
    }
}

上图示例两个方法都会监听Userd类型参数的事件,所以两个方法都会执行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring EventSpring框架中的一种实现观察者模式的机制。它的主要应用是实现程序解耦,通过事件的广播形式来实现不同组件之间的通信。 在Spring中,Event的实现方式是通过使用继承自java.util.EventObject类的ApplicationEvent抽象类。Spring提供了一些已经定义好的应用上下文事件的实现,如容器关闭、刷新、启动、停止等事件,以及RequestHandledEvent(HTTP请求处理完成事件)。同时,我们也可以自定义事件,只需要实现ApplicationEvent抽象类并定义带参数的构造函数即可,其中source表示事件源,根据自己的需求进行制定。 在实现中,我们可以通过@Configuration注解来标识一个类为配置类,并使用@EventListener注解来标识一个方法为事件处理方法。在事件处理方法中,可以根据不同的事件类型进行处理,例如打印出事件的消息内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringEvent](https://blog.csdn.net/weixin_45874214/article/details/126167211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Spring Event 事件发布/监听机制 详解并使用](https://blog.csdn.net/qq_37758497/article/details/118863308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tao____

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

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

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

打赏作者

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

抵扣说明:

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

余额充值