首页 > 编程知识 正文

spring事件驱动编程,java工作原理的组成部分

时间:2023-05-06 09:16:27 阅读:141982 作者:1776

事件驱动机制是在连续事务管理过程中,做出决策以跟踪当前时间点发生的事件,调动可用资源,执行相关任务,解决不断出现的问题,防止事务堆积的策略在计算机编程、公共关系、经济活动等领域得到应用。

事件驱动简单地说,就是你单击了什么按钮,发生了什么事件,计算机执行了什么操作,也就是调用了什么函数。 当然,事件不限于用户的操作。 事件驱动的核心当然是事件。 从事件的角度看,事件驱动程序的基本结构由事件收集器、事件发射器和事件处理器组成。 事件收集器负责收集所有事件,包括来自用户的事件(如鼠标、键盘事件)、硬件事件(如时钟事件)和软件事件(如操作系统或APP应用程序本身) 事件发射器将收集器收集的事件分发到目标对象。 事件处理程序负责具体的事件响应工作,在许多情况下,需要使用虚函数机制才能完全确定,直到实现阶段。 事件驱动体系结构由三个基本组件组成:事件、事件处理器和事件循环。 当事件发生时,它将被发送到事件循环,事件循环将每个事件分配给单独的事件处理器。 事件a由处理器a处理,事件b由处理器b处理。 对于框架的使用者来说,他们能看到的是事件处理器,这也是他们能操作的地方。

事件驱动的一种常见形式是发布-订阅模式。 事件驱动机制的耦合度相对较高。 进程间的交流通常采用引入消息队列(MQ )来实现消息的发布和订阅。 目前主流的APP应用体系结构采用消息发布-订阅模式来解除大型分布式系统的耦合。 在将数据的生产方和使用方分离的同时,MQ还可以起到切峰等作用。 经常需要这样的事件驱动机制,以便即使在同一进程内也从逻辑上解除耦合。 使用事件机制

事件机制主要由三个部分组成。 事件源、事件对象和侦听器。 具体说明如下。 -事件源:事件发生的起源-事件对象:事件实体,事件对象具有事件源-侦听器,用于接收和处理事件对象。

Java提供了与事件相关的接口定义。 具体有以下两种。

事件对象:事件对象。 自定义事件对象必须继承类

事件监听器:事件侦听器接口

Java没有给出正确的定义,因为事件源Source不需要实现接口。 简单使用Java本机实现事件模型的示例:

公共类事件测试{

publicstaticvoidmain (string [ ] args ) {

event source event source=new event source (;

testeventlistenerlistener=newtesteventlistener (;

event source.addlistener (listener );

eventsource.publish event (new test event ) event source,'一个事件');

}

}

//*

*事件对象

*/

classtesteventextendseventobject {

私有字符串msg;

//*

* Constructs a prototypical Event

*

* @ paramsourcetheobjectonwhichtheeventinitiallyoccurred。

* @param msg附加消息

* @ throwsillegalargumentexceptionifsourceisnull。

*/

publictestevent (对象源,String msg ) {

super (源;

this.msg=msg;

}

公共字符串获取(

return msg;

}

}

//*

*事件侦听器,必须根据Java规范实现事件侦听器接口

*/

classtesteventlistenerimplementseventlistener {

公共语音手持事件(testeventevent ) {

system.out.println('testevent,msg is:' event.getMsg );

}

}

//*

*事件源

*/

class EventSource {

privatesetlistenerset=new hashset (;

公共语音地址(eventlistener ) )。

listenerset.add(listener;

}

publicvoidpublishevent (testeventevent ) {

事件列表生成器:监听器(for )

(TestEventListener ) eventListener ).handleevent );

}

}

}

上面的代码示例是在Java中实现事件的发出和接收的过程。

在框架中使用事件实际上与在Java中使用时间机制没有什么不同。 由事件源、事件对象和事件侦听器组成。 与Java本机提供的事件机制不同,Spring提供了一个ApplicationEvent类作为基类,开发者可以据此定义自己的定制事件。 Spring允许Spring容器管理从ApplicationEvent继承的事件对象的侦听器,并在发布时在ApplicationEventPublisher中发布。 这样就不需要自己实现窃听者的注册和通知过程,不需要很多繁琐的过程,可以专注于业务本身。

我认为事件驱动机制实际上是一个反推过程。 通常,在执行函数操作后生成事件,但事件驱动机制会根据生成的事件反过来推出需要执行的操作。 当然这也只是我个人的理解。 毕竟有一千名读者,一千个大气包。 我们可以根据自己的需求,结合自己的特点更好地理解事件驱动机制。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。