Spring Boot实战笔记-- Spring常用配置(事件Application Event)

Posted dyppp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot实战笔记-- Spring常用配置(事件Application Event)相关的知识,希望对你有一定的参考价值。

一、事件(Application Event)

  Spring的事件为Bean和Bean之间的消息通信提供了支持。当一个Bean处理完一个任务之后,希望另一个Bean知道并能做相应的处理,这时我们就需要让另一个Bean监听当前Bean所发送的事情。

  Spring的事件需要遵循如下流程:

  (1)自定义事件,集成ApplicationEvent。

  (2)定义事件监听器,实现ApplicationListener。

  (3)使用容器发布事件。

示例:

  1.自定义事件。

package com.ecworking.event;

import org.springframework.context.ApplicationEvent;

public class DemoEvent extends ApplicationEvent{
    private static final long serialVersionUID = 1L;
    private String msg;

    public DemoEvent(Object source, String msg) {
        super(source);
        this.msg = msg;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

  2.事件监听器。

package com.ecworking.event;

import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

@Component
public class DemoListener implements ApplicationListener<DemoEvent> { //实现ApplicationListener接口,并指定监听的事件类型。
    public void onApplicationEvent(DemoEvent event){ //使用onApplicationEvent方法对消息进行接受处理。
        String msg = event.getMsg();
        System.out.println("bean-demoListener 接收到了 bean-demoPublisher 发布的消息:" + msg);
    }
}

  3.事件发布类。

package com.ecworking.event;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

@Component
public class DemoPublisher {
    @Autowired
    ApplicationContext applicationContext; //注入ApplicationContext用来发布事件。

    public void publish(String msg){
        applicationContext.publishEvent(new DemoEvent(this, msg)); //使用 ApplcationContext 的 publishEvent 方法来发布。
    }
}

  4.配置类。

package com.ecworking.event;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.ecworking.event")
public class EventConfig {
}

  5.运行。

package com.ecworking.event;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(EventConfig.class);

        DemoPublisher demoPublisher = context.getBean(DemoPublisher.class);

        demoPublisher.publish("hello application event");

        context.close();
    }
}

运行结果:

 

以上是关于Spring Boot实战笔记-- Spring常用配置(事件Application Event)的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot实战笔记-- Spring高级话题(计划任务)

Spring Boot实战笔记-- Spring高级话题(Spring Aware)

Vue + Spring Boot 项目实战笔记

JavaEE开发的颠覆者 Spring Boot实战--笔记

Spring Boot实战笔记-- Spring常用配置(事件Application Event)

Spring Boot实战笔记-- Spring高级话题(条件注解@Conditional)