5.12.2 事件处理
通过 ApplicationEvent类和 ApplicationListener接口,可实现 ApplicationContext 的事件处理。如果容器中有一个 ApplicationListener bean,每当 ApplicationContext 发布ApplicationEvent时,ApplicationListenerbean将自动响应,这是标准的观察者模式。Spring 的事件框架有如下两个重要成员。
ApplicationEvent: 容器事件,必须由 ApplicationContext 发布。
ApplicationListener: 监听器,可由容器中的任何监昕器 bean 担任。
以下是个简单的容器事件类,该类继承 ApplicationEvent。代码如下:
public class EmailListEvent extends ApplicationEvent
{
public EmailListEvent(Object source)
{
super(source);
}
public EmailListEvent(Object source,String address,String text)
{
super(source);
this.address=address;
this.text = text;
|
下面是监昕器类,监听器类必须实现ApplicationListener接口。实现该接口必须实现一个方法:
voidonApplicationEvent(ApplicationEventevent)
|
每当容器内发生任何事件时,此方法都会被触发,监听器类的配置文件如下:
//监昕器类,实现ApplicationListener接口
public classEmailNotifier implementsApplicationListener
//实现 ApplicationListener接口必须实现的方法,该方法会在容器发生事件时自动触发
public void onApplicationEvent(ApplicationEvent evt)
//如果事件是程序触发的事件
if (evt instanceof EmailEvent)
//发送 E-mail通知...EmailEvent emailEvent = (EmailEvent)evt;
System.out.println("需要发送邮件的接收地址
+emailEvent.address);
System.out.println("需要发送邮件的邮件正文" + emailEvent.text);
}
else
//容器内置事件不作任何处理
System.out.println("容器本身的事件" + evt);
将监昕器配置在容器中,配置文件如下=
<?xml version="l.O" encoding="gb23l2"?>
<!指定 Spring 配置文件的dtd>
<lDOCTYPE beans PUBLIC"-//SPRiNG//DTDBEANIlEN"
''http://www.springframework.org/dtd/spri口g-beans.dtd">
<! --Spring配置文件的根元素一〉
<beans><!--配置监听器类-->
<bean id="emailListListener" class="lee.EmailNotifier"l>
</beans>
|
其主程序部分使用ApplicationContext的 publishEvent来发布事件:
public classSpringTest
public static void main(String[] args)
{
ApplicationContext ctx =newFileSystemXrnl
ApplicationContext("bean.xml");EmailEvent ele =
new EmailEvent("hello" , "kongyeeku@gmail.com",
"thisisatest");ctx.publishEvent(ele);
|
程序执行结果如下:
[java] 容器本身的事件。rg.springframework.context.event.ContextRefreshed
Event[source=org.springframework.context.support.FileSystemXrnlApplicationC
ontext: display name[org.springframework.context.
support.FileSystemXrnlApplicationContext;hashCode=76l5385];
startup date [Mon May 08 16:54:39 CST 2006]; root of contexthierarchy]
[java] 需要发送邮件的接收地址kongyeeku@gmail.com
[java] 需要发送邮件的邮件正文this is a test
|
此时监昕器不仅监昕到程序发布的事件,同时也监昕到容器内置的事件。
注意:如果 bean 想发布事件,则 bean 必须获得其容器的引用,应通过实现BeanFactoryAware接口达到此目的。
Spring提供了以下三个内置事件:
ContextRefreshedEven: ApplicationContext容器初始化或刷新触发该事件。
ContextClosedEvent: ApplicationContext容器关闭时触发该事件。
RequestHandledEvent: Web 相关的事件,只能应用于使用DispatcherServlet的 Web应用。
分享到:
相关推荐
此外,源码可能还包含了事件处理,如按钮点击事件,以控制扫描图的开始、暂停或保存等操作。QT的信号和槽机制是实现这种事件驱动编程的关键,它允许组件之间进行通信,例如,当用户点击“开始扫描”按钮时,信号会被...
Qt Core:提供核心功能,如事件处理、定时器、文件处理等。 Qt GUI:提供用于创建和管理图形用户界面的工具和控件。 Qt Widgets:提供一套丰富的预制控件,如按钮、文本框、列表框等。 Qt Network:提供网络编程的...
Qt Core:提供核心功能,如事件处理、定时器、文件处理等。 Qt GUI:提供用于创建和管理图形用户界面的工具和控件。 Qt Widgets:提供一套丰富的预制控件,如按钮、文本框、列表框等。 Qt Network:提供网络编程的...
3. 实现鼠标事件处理,如`mouseMoveEvent`、`mousePressEvent`和`mouseReleaseEvent`,根据不同的鼠标操作更新视图状态。 4. 可能还会有一个专门的数据加载模块,用于读取点云数据,例如从PCL(Point Cloud Library...
SSCOM可能使用了事件驱动编程模型,监听串口事件,如数据到达、端口状态变化等,这可能涉及到多线程和异步处理。 5. **图形用户界面**: 源码可能包含使用GUI库(如Qt、WinAPI、wxWidgets等)创建的界面,用于...
第1章 什么是Java程序设计语言 1 1.1 Java语言诞生背景 1 1.2 Java语言的特点 1 ...C.2 Swing组件的事件处理 447 附录D JDBC程序设计简介 449 D.1 注册数据源 449 D.2 测试JDBC 450
2. **qtbase**:基础Qt库,包含了Qt的主要功能,如事件处理、图形绘制、网络通信等。 3. **qtdeclarative**:Qt Quick模块,用于创建基于QML的用户界面,它提供了声明式的UI设计和JavaScript交互。 4. **qt...
1. **Core模块**:它是Qt的基础,提供数据类型、内存管理、线程支持、事件处理和日志记录等功能。例如,QObject类是所有Qt对象的基类,提供了信号与槽机制,这是Qt异步通信的关键。 2. **Gui模块**:提供图形用户...
总的来说,这个小型视频播放器项目涵盖了QT库的多媒体功能、图形用户界面设计、事件处理和跨平台开发等多个方面的知识。通过学习和分析这个项目,开发者不仅可以掌握QT的基本用法,还能深入了解如何构建一个实际的...
sr_dishdlr() 禁止事件处理句柄 228 sr_enbhdlr() 启用事件句柄函数 230 sr_getboardcnt() 取回指定类型的卡数目 232 sr_GetDllVersion() 取回SRL DLL的版本号 234 sr_getevtdatap() 取回事件关联数据的内存地址...
5.12.2 java i/o基本类库介绍 5.12.3 具体实现 5.13 获取file和cache的路径 5.14 wi-fi服务 5.14.1 wi-fi简介 5.14.2 实现原理 5.14.3 具体实现 5.15 获取sim卡内信息 5.15.1 sim卡简介 5.15.2 实现原理 5.15.3 ...
这个实例展示了QT5的基本用法,如何处理用户交互以及如何与操作系统进行集成。QT5的灵活性和强大的功能使得开发者可以轻松地创建复杂的桌面应用,同时还能跨平台运行。通过深入学习QT5的其他组件和功能,如信号与槽...
5.12.2 有名管道的打开 5.12.3 管道的读和写 5.12.4 管道的关闭 5.12.5 例 5.13 系统调用dup 5.14 文件系统的安装和拆卸 5.14.1 在文件路径名中跨越安装点 5.14.2 文件系统的拆卸 5.15 系统调用link 5.16 ...
5.12.2 有名管道的打开 5.12.3 管道的读和写 5.12.4 管道的关闭 5.12.5 例 5.13 系统调用dup 5.14 文件系统的安装和拆卸 5.14.1 在文件路径名中跨越安装点 5.14.2 文件系统的拆卸 5.15 系统调用link 5.16 系统...
- **目标**: 提供全方位的服务管理,包括资源配置、资产管理、事件处理等多个方面。 - **功能**: 如配置管理、资产管理、工作台、事件管理等模块的设计与实现。 #### 四、智能化资源预报系统功能设计 **4.1 基础...
- 用于处理业务流程事件的函数。 **5.9 业务动作** - **5.9.1 全局的业务动作** - 可以在整个业务环境中使用的动作。 - **5.9.2 业务过程级的业务动作** - 适用于整个业务流程的动作。 - **5.9.3 业务环节级的...
5. **处理解析结果**:在Qt的事件循环或特定函数中,调用解析器来处理用户输入或文件内容。解析结果通常通过回调函数或共享数据结构传递给Qt应用程序的其他部分。 6. **调试和优化**:测试解析器,确保它能正确处理...
事件处理机制使得设备能够响应各种外部触发事件,如移动检测等。 ##### 4.11 PTZ控制 PTZ(Pan/Tilt/Zoom)控制用于操作摄像头的水平旋转、垂直旋转和变焦功能。 ##### 4.12 视频分析 视频分析功能允许设备进行...
Qt的核心特性包括事件驱动系统、图形渲染引擎、网络编程接口、数据库连接、XML处理、国际化和本地化支持,以及多媒体和OpenGL集成等。 在Qt5.12.10这个特定版本中,引入了一些关键改进和新特性。例如,对C++11标准...
- **异常**: 当处理器检测到某些错误情况时触发的事件,如硬件故障、软件中断等。 **5.2 异常类型** - **硬件异常**: 如除法错误、非法指令等。 - **软件中断**: 如通过SWI指令发起的中断。 **5.3 异常优先级** ...