当前位置: 首页 > news >正文

做贸易网站layui加入wordpress

做贸易网站,layui加入wordpress,企业网站建设话术,wordpress中文名Spring的监听机制详解 讲在前面 对Spring框架#xff0c;大家都已不陌生#xff0c;它给我们提供了很多功能#xff0c;包括IoC、AOP、事务管理等。其中#xff0c;Spring的事件监听机制是一项非常重要的功能#xff0c;它允许开发人员定义和处理自定义事件#xff0c;并…Spring的监听机制详解 讲在前面 对Spring框架大家都已不陌生它给我们提供了很多功能包括IoC、AOP、事务管理等。其中Spring的事件监听机制是一项非常重要的功能它允许开发人员定义和处理自定义事件并在应用程序中发布和监听这些事件。        这个机制可以让我们更加灵活地响应应用程序中发生的事件同时还可以减少不同组件之间的耦合度。本文老朱将介绍Spring的事件监听机制包括如何使用Spring提供的标准事件和如何定义和处理自定义事件。同时我们还将讨论这个机制的底层原理和常见的应用场景。 1 Spring事件监听机制的原理 Spring 的监听机制是非常优秀的思想它能够很好地实现代码解耦将业务逻辑与非业务逻辑分离让程序变得更加灵活和可维护。在业务开发中我们可以借鉴这种思想例如电商下单场景下单业务的核心逻辑只与下单有关但下单完成后我们需要执行非业务逻辑如发通知和记录用户行为日志这些非业务逻辑可以通过监听器来解耦从而实现代码的灵活和可维护性。那么监听机制的底层原理是什么呢我们一起分析下。 实现Spring事件机制主要有4个接口 1.1 ApplicationEventPublisher事件发布 javaCopy code public interface ApplicationEventPublisher {void publishEvent(ApplicationEvent event);void publishEvent(Object event);1.2 ApplicationListener事件监听 public interface ApplicationListenerE extends ApplicationEvent extends EventListener {void onApplicationEvent(E event); }1.3 ApplicationEvent事件 public abstract class ApplicationEvent extends EventObject {private final long timestamp;public ApplicationEvent(Object source) {super(source);this.timestamp System.currentTimeMillis();}public long getTimestamp() {return this.timestamp;}public String toString() {return getClass().getSimpleName() {timestamp this.timestamp , source getSource() };} }1.4 ApplicationEventMulticaster事件广播器Spring中负责事件的发布和监听的核心接口 public interface ApplicationEventMulticaster {//用于向事件广播器注册一个监听器。在广播器发送事件时这个监听器将会接收到事件。void addApplicationListener(ApplicationListener? listener);//用于将一个已经注册的监听器从事件广播器中移除。void removeApplicationListener(ApplicationListener? listener);//用于移除所有注册的监听器。void removeAllListeners();//用于向所有已注册的监听器广播一个事件。void multicastEvent(ApplicationEvent event); }Spring的源码中当初始化beanfacotory时我们会发现Spring会初始化事件广播器以及注册事件监听器源码如下标红的源码你们追进去看看逻辑很简单。 2 Spring框架内部事件监听机制的应用 在Spring框架中有许多预定义的事件这些事件涵盖了Spring的生命周期、Web应用程序上下文的生命周期以及许多其他方面。下面是一些常见的Spring事件 ContextRefreshedEvent 当ApplicationContext被初始化或刷新时触发该事件。 ContextStartedEvent 当ApplicationContext被启动时触发该事件即在所BeanDefinition都已加载和bean初始化之后。 ContextStoppedEvent 当ApplicationContext被停止时触发该事件即在所有singleton bean被销毁之前。 ContextClosedEvent 当ApplicationContext被关闭时触发该事件即在所有singleton bean被销毁之后。 RequestHandledEvent 在Web应用程序上下文中当HTTP请求被处理完毕后触发该事件。 ServletRequestHandledEvent 与RequestHandledEvent类似但是专为Spring的DispatcherServlet设计。 除了这些预定义的事件之外开发人员还可以创建自己的自定义事件并使用ApplicationEventPublisher接口将其发布到应用程序上下文中。 3 自定义监听 假设我们正在开发一个在线商城应用程序我们需要在用户下单时发送一个通知邮件给商家。为了实现这个功能我们可以使用自定义事件来触发邮件发送操作。 首先我们需要定义一个名为OrderPlacedEvent的自定义事件用于表示用户下单的事件。代码如下 package com.qf.listener;import org.springframework.context.ApplicationEvent;public class OrderPlacedEvent extends ApplicationEvent {private Order order;public OrderPlacedEvent(Object source, Order order) {super(source);this.order order;}public Order getOrder() {return order;} }在上述代码中我们定义了一个名为OrderPlacedEvent的自定义事件并通过实现构造函数和getOrder()方法来传递订单参数和获取订单参数。 然后我们需要定义一个名为OrderPlacedEventListener的自定义事件监听器用于处理用户下单事件并触发邮件发送操作。代码如下 package com.qf.listener;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener;import org.springframework.stereotype.Component;Component public class OrderPlacedEventListener {EventListenerpublic void handleOrderPlacedEvent(OrderPlacedEvent event) {Order order event.getOrder();String message 您有一个新的订单订单号为 order.getOid();//todo 发邮件System.out.println(message message);} }在上述代码中我们定义了一个名为OrderPlacedEventListener的自定义事件监听器在handleOrderPlacedEvent()方法中我们从事件对象中获取订单参数然后发送邮件具体邮件代码此处省略最后当用户下单成功时我们需要在订单服务对象中触发OrderPlacedEvent事件以便通知邮件能够被发送。代码如下 package com.qf.listener;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service;Service public class OrderService {Autowiredprivate ApplicationEventPublisher eventPublisher;public void placeOrder(Order order) {// 订单保存逻辑// ...// 触发订单下单事件eventPublisher.publishEvent(new OrderPlacedEvent(this, order));} }在上述代码中我们定义了一个名为OrderService的订单服务对象并使用Autowired注解来注入一个事件发布器对象。在placeOrder()方法中我们调用订单保存逻辑然后使用事件发布器对象触发OrderPlacedEvent事件并传递订单参数。 通过上述代码我们可以在用户下单时触发OrderPlacedEvent事件并通过自定义事件监听器处理该事件并触发邮件发送操作。 4 Spring事件监听机制的优点 Spring事件监听机制具有以下优点 1.松耦合通过事件监听机制组件之间的耦合度得到了很大的降低每个组件只需要监听自己感兴趣的事件不需要关心其他组件的实现细节。 2.可扩展性通过定义新的事件类型和监听器应用程序的功能可以随着需求的变化而不断扩展。 3.高可靠性事件监听机制可以保证应用程序的可靠性即使某个组件出现异常或错误其他组件仍然可以正常运行。 5 总结 Spring 监听机制是一种非常优秀的设计模式观察者模式它可以实现代码的解耦和模块化。通过定义事件和监听器我们可以将代码的不同模块分离开来以便更好地维护和修改。Spring 框架内置了许多事件和监听器如上下文事件、Bean 事件、Web 事件等开发者也可以根据具体需求自定义事件和监听器。 对于开发者来说使用 Spring 监听机制非常简单。只需要实现事件和监听器接口并在代码中注册监听器即可。Spring 会自动管理事件和监听器的生命周期确保它们的正确运行。同时由于 Spring 监听器使用了异步执行机制因此不会影响主线程的运行效率保证了应用程序的高并发和高效性。
http://www.hkea.cn/news/14476627/

相关文章:

  • 网站开发费用做账完整个人网站html
  • 网站功能是什么找合作项目app平台
  • 做动漫短视频网站漳州网站开发
  • wordpress搜索字段宁波seo排名优化价格
  • 在线A视频网站(级做爰片)wordpress无法打开
  • 阿里巴巴网站的搜索引擎优化案例红色文化网站建设
  • 上海营销型网站建站扁平化企业网站
  • 一个单位网站被黑该怎么做网页加速器手机
  • 手机网站做指向wordpress工具栏移到底部
  • 申请绿色网站wordpress 死链检测
  • 大连网站制作开发东阳便宜自适应网站建设优惠
  • 网站开发流程记住吧邯郸信息港房屋出售
  • 可以做区块链推广的网站哈尔滨模板网站
  • 中英文网站为什么要分开做域名备案成功如何做网站
  • 菏泽正耀网站建设公司怎么样大连网站设计哪个最好
  • 什么网站做家具出口马来西亚的网站后缀
  • 哈尔滨门户网站是什么用python怎么做网站
  • 中核二三公司是国企还是央企汕头seo管理
  • 网站线框图wordpress 4.7.2 中文
  • 办网站流程wordpress添加导航首页
  • 做网站一般用什么软件项目商业网站建设方案
  • 象山经济开发区建设有限公司网站网页ui设计是什么
  • 网站做外链什么意思论坛类型的网站怎么做
  • wordpress是建站工具 还是语言学院门户网站建设自评
  • php网站接入支付宝淄博网站制作托管优化
  • 制作微信公众的网站开发来宾 网站建设
  • 网站管理是什么石家庄市建设厅网站
  • 资讯门户类网站有哪些从0搭建一个网站
  • 国内html5网站建设新闻类网站怎么做百度推广
  • 网站开发工程师 面试英语网站icp备案查询