博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
精通Spring Boot——第四篇:Spring事件 Application Event
阅读量:6077 次
发布时间:2019-06-20

本文共 1958 字,大约阅读时间需要 6 分钟。

hot3.png

Spring的事件为Bean与Bean之间的通信提供了支持,当我们系统中某个Spring管理的Bean处理完某件事后,希望让其他Bean收到通知并作出相应的处理,这时可以让其他Bean监听当前这个Bean所发送的事件。

要实现事件的监听,我们要做两件事: 1:自定义事件,继承ApplicationEvent接口 2:定义事件监听器,实现ApplicationListener 3:事件发布类

/** * @TODO // 自定义事件,继承ApplicationEvent接口 * @Author Lensen * @Date 2018/7/22 * @Description */public class SendMsgEvent extends ApplicationEvent {    private static final long serialVersionID = 1L;    // 收件人    public String receiver;    // 收件内容    public String content;    public SendMsgEvent(Object source) {        super(source);    }    public SendMsgEvent(Object source, String receiver, String content) {        super(source);        this.receiver = receiver;        this.content = content;    }    public void output(){        System.out.println("I had been sand a msg to " + this.receiver);    }}
/** * @TODO //定义事件监听器,实现ApplicationListener * @Author Lensen * @Date 2018/7/22 * @Description */@Componentpublic class MsgListener implements ApplicationListener
{ @Override public void onApplicationEvent(SendMsgEvent sendMsgEvent) { sendMsgEvent.output(); System.out.println(sendMsgEvent.receiver + "received msg : " + sendMsgEvent.content ); }}

事件发布类

@Componentpublic class Publisher {    @Autowired    ApplicationContext applicationContext;    public void publish(Object source, String receiver, String content){        applicationContext.publishEvent(new SendMsgEvent(source, receiver, content));    }}

测试消息:WebConfig.class主要是为了扫描Publisher 和Listener类。里面有两个注解@ComponenScan和@Configuration。

public static void main(String[] args) {        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(WebConfig.class);        Publisher publisher = applicationContext.getBean(Publisher.class);        publisher.publish("Hello,World!","Mr.Lensen", "I Love U");    }

结果:

I had been sand a msg to Mr.LensenMr.Lensen received msg : I Love U

转载于:https://my.oschina.net/liululee/blog/2222766

你可能感兴趣的文章
Eclipse调试Bug的七种常用技巧
查看>>
Msys/MinGW与Cygwin/GCC(转)
查看>>
添加一个关闭ProgressDialog的静态方法:
查看>>
lightmap工具
查看>>
python访问Hive配置 - jmydream的专栏 - 博客频道 - CSDN.NET
查看>>
HDU 4419 Colourful Rectangle 第37届ACM/ICPC 杭州赛区网络赛 1010题 (线段树)
查看>>
win32 窗体开发主要流程
查看>>
超炫的iphone应用UI/UX设计赏析
查看>>
WinForm中的简单打印
查看>>
Oracle Financials AR产品功能介绍之应收账款
查看>>
第42周星期三
查看>>
第42周星期日
查看>>
ORECLE EBS 如何调试
查看>>
SUSE Linux的防火墙SuSEfirewall2 相关命令和配置
查看>>
IBM RSA (IBM rational software architect ) V8 学习之六 C++类模板设计
查看>>
玩玩小爬虫——试搭小架构
查看>>
Basic4android (Basic for Android) - Rapid Application Development
查看>>
Asp.net web Api源码分析-ParameterBindingAttribute
查看>>
Numpy, Scipy, and Pandas – Oh My! (Ubuntu 11.10) » Adam Klein's Blog
查看>>
操作系统设计与实现:深入解析 1
查看>>