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

免费资料网站网址下载视频网站开发php

免费资料网站网址下载,视频网站开发php,基础建设的意义,网站建设案例 优帮云spring 4.3.x创建松耦合应用程序的概念和技术很多#xff0c;Event是其中之一。 事件可以消除代码中的许多依赖关系。 有时没有事件#xff0c;很难实施SRP *。 Java中的Observable接口可以帮助我们实现事件#xff08;通过Observer Pattern#xff09;。 但是#xff0c… spring 4.3.x 创建松耦合应用程序的概念和技术很多Event是其中之一。 事件可以消除代码中的许多依赖关系。 有时没有事件很难实施SRP *。 Java中的Observable接口可以帮助我们实现事件通过Observer Pattern。 但是等等这篇文章的目标是关于Spring Event的快速教程。 Spring具有一些用于创建事件驱动应用程序的好工具。 您可以在一个bean中引发一个特定的事件并在另一个bean中监听它。 想象一个简单的应用程序具有以下要求 有些订单的状态可能不同 当订单处于“已交付”或“已推迟”状态时我们需要向客户发送电子邮件 满足需求的第一个但不是最好的解决方案是在我们的订单模型中发送电子邮件但是存在一些缺陷 订单不负责发送电子邮件。 如果您遵循域驱动原则那么Order是一个域对象但Email Sender可能是一项服务不同于Domain Service因此您不能在模型中使用它。 另一个解决方案是在更改其状态后在Order模型中引发一些事件。 我不关心订购在引发此事件之后会发生什么。 在我们的示例中我们需要收听特定类型的事件对其进行分析并开展一些业务发送电子邮件。 Configurablepublic class Order implements ApplicationEventPublisherAware {private final String orderId;private final Date createDate;private final CustomerInfo customerInfo;private ApplicationEventPublisher eventPublisher;private Date lastUpdateDate;private Status status;public Order(String orderId, CustomerInfo customerInfo) {this.orderId orderId;this.customerInfo customerInfo;status Status.MODIFIABLE;this.createDate new Date();this.lastUpdateDate this.createDate;}public String getOrderId() {return orderId;}public void checkOut() {if (status Status.DELIVERED) {throw new IllegalStateException(String.format(Order is already delivered));}this.status Status.CHECKED_OUT;this.lastUpdateDate new Date();}public void deliver() {if (this.status ! Status.CHECKED_OUT this.status ! Status.POSTPONED) {throw new IllegalStateException(String.format(Order status should be CHECKED OUT for delivery to be called. but is : %s, status));}this.status Status.DELIVERED;this.lastUpdateDate new Date();this.eventPublisher.publishEvent(new OnOrderDelivered(this));}public void postponeDelivery() {if (status ! Status.CHECKED_OUT status ! Status.POSTPONED) {throw new IllegalStateException(String.format(Can not postpone delivery in this state: %s, status));}this.status Status.POSTPONED;this.lastUpdateDate new Date();this.eventPublisher.publishEvent(new OnOrderPostponed(this));}public Status getStatus() {return status;}public CustomerInfo getCustomerInfo() {return customerInfo;}public Date getLastUpdateDate() {return lastUpdateDate;}public Date getCreateDate() {return createDate;}Overridepublic void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {this.eventPublisher applicationEventPublisher;}public static enum Status {MODIFIABLE,CHECKED_OUT,POSTPONED,DELIVERED,CANCELED;}} 如您所见Order是一个可配置的类如果您以前从未使用过此概念请不要为之苦恼。 对于这篇文章您只需要知道可配置类可以在任何地方使用new关键字创建但是它们是由spring管理的因此您可以向其中注入其他bean或将大多数spring功能与它们一起使用。 我保证会尽快发布有关它的文章。 Order类实现org.springframework.context.ApplicationEventPublisherAware接口。 此接口具有名称为setApplicationEventPublisher的setter方法该方法表示要在您的类中使用的ApplicationEventPublisher 。 如您在deliver方法中所见我们使用该对象发布事件 this.eventPublisher.publishEvent(new OnOrderDelivered(this)) 。 您可以发布扩展org.springframework.context.ApplicationEvent每个事件。 当订单被推迟时我们引发了另一个事件OnOrderPostponed 。 public abstract class OnOrderStatusChanged extends ApplicationEvent {private final Order order;public OnOrderStatusChanged(Order source) {super(source);this.order source;System.out.println(String.format(Order:%s status is changed to %s, source.getOrderId(), source.getStatus()));}public Order getOrder() {return order;}}public class OnOrderDelivered extends OnOrderStatusChanged {public OnOrderDelivered(Order order) {super(order);}}public class OnOrderPostponed extends OnOrderStatusChanged {public OnOrderPostponed(Order order) {super(order);}} OnOrderStatusChanged是一个抽象类OnOrderDelivered和OnOrderPostponed对其进行了扩展。 到现在为止我们可以创建活动并发起活动。 现在如果您创建一个弹簧测试并调用订单的传递方法您将看到“ OrderX状态更改为DELIVERED”。最后一步是在发布这些事件时执行某些操作。 这些方法提出后我们希望向客户发送电子邮件。 另外对于客户来说在订单处于交付状态时发布产品也很有价值。 侦听器是实现通用ApplicationListener接口的简单Bean。 此接口中的参数类型是您要监听的事件的类型。 可以将参数类型定义为父级并侦听其所有子级。 例如在我们的模型中如果我们使用OnOrderStatusChanged侦听器将捕获OnOrderDelivered和OnOrderPostponed所有事件 在我们的方案中它可能适合发送电子邮件。 但是我们不使用此模型而是为它们创建两个不同的侦听器。 如您所见它们的代码非常简单 Servicepublic class OrderDeliveredEmailSender implements ApplicationListener,Ordered {Overridepublic void onApplicationEvent(OnOrderDelivered event) {System.out.println(String.format(Message sent for delivered order to:%s ORDER-ID:%s,event.getOrder().getCustomerInfo().getEmail(),event.getOrder().getOrderId()));}Overridepublic int getOrder() {return 100;}}Servicepublic class OrderPostponedEmailSender implements ApplicationListener {Overridepublic void onApplicationEvent(OnOrderPostponed event) {System.out.println(String.format(Message sent for postponed order to:%s ORDER-ID:%s, event.getOrder().getCustomerInfo().getEmail(), event.getOrder().getOrderId()));}} 当引发对应事件时这两个bean将触发onApplicationEvent。 为了将产品发布给客户我们需要为OnOrderDelivered事件创建另一个监听器。 Servicepublic class OnOrderDeliveredPost implements ApplicationListener,Ordered {Overridepublic void onApplicationEvent(OnOrderDelivered onOrderDelivered) {System.out.println(String.format(Order:%s is posting for customer.,onOrderDelivered.getOrder().getOrderId()));}Overridepublic int getOrder() {return 1000;}} 如您所见当状态为“已交付”时此侦听器会将产品发送给客户。 但是等一下什么是Ordered接口 如果您没有使用org.springframework.core.Ordered接口那么知道使用此接口可以定义集合中bean之间的顺序是很有价值的。 在我们的方案中客户喜欢在将产品发布给他之前收到一封电子邮件。 为此这两个类实现了Ordered接口不要忘记最低的顺序具有最高的优先级。 *单一责任原则 您可以从以下网址下载源代码 https : //github.com/psycho-ir/spring-event.git 参考 Just另一个Java博客博客中的JCG合作伙伴 Soroosh Sarabadani的Spring 3.x中的如何使用Events 。 翻译自: https://www.javacodegeeks.com/2013/08/how-to-use-events-in-spring-3-x.htmlspring 4.3.x
http://www.yutouwan.com/news/323949/

相关文章:

  • 深圳优化网站公司社交平台推广
  • 石家庄网站开发费用微营销推广平台有哪些
  • 织梦网站栏目如何做下拉美工做网站怎么收费
  • 成都网站设计制作价格网站如何做会员登录页面
  • 网站建设中的技术问题长治个人网站建设
  • dede 网站栏目管理中国商务网官网
  • 这样可以做网站php网站开发结构说明
  • 昆明体育城微网站建设媒约网网址是多少
  • o2o网站建设推广平台 赚佣金
  • 过期网站查询微信开发应用平台
  • 兴义哪有做网站苍南做网站
  • 余姚网站seo运营石家庄建站培训
  • 网站结构怎么做asp网站建设外文参考文献
  • 网站接入服务提供商番禺网站建设开发
  • 织梦网站模板如何安装杭州做网站工作室
  • 我英文网站建设哈尔滨市做网站公司
  • 北京做网站好的网站建设公司西安排名seo公司
  • 什么做网站的公司好网站建设哪家合适
  • 襄阳市住房城乡建设部网站cms支持是什么
  • 怎样做才能让网站帮忙送东西网站开发及技术
  • 网站开发主菜单和子菜单公司网站建设高端网站建设网页设计
  • 青海网页设计与网站建设百度关键词优化点击 教程
  • 软文标题写作技巧网站主题及样式优化
  • uzi粉丝做的网站代理公司招标流程
  • 电子商务网站开发的视频安阳网站开发
  • 保定网站建设咨询做一个h5需要多少钱
  • 枣庄高端品牌网站建设案例微信分销商城平台系统
  • 阿里云的轻量服务器怎么做网站国外网站 dns
  • 个人网站建设推广策划书参与做网站的收获
  • 公司网站未备案吗礼信堂 网站开发