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

企业网站建设兴田德润实惠搜索引擎在线

企业网站建设兴田德润实惠,搜索引擎在线,1688加工厂接单,襄阳做网站哪家好前言 本节内容我们主要介绍一下springboot自定义事件的发布与订阅功能#xff0c;一些特定应用场景下使用自定义事件发布功能#xff0c;能大大降低我们代码的耦合性#xff0c;使得我们应用程序的扩展更加方便。就本身而言#xff0c;springboot的事件机制是通过观察者设…前言 本节内容我们主要介绍一下springboot自定义事件的发布与订阅功能一些特定应用场景下使用自定义事件发布功能能大大降低我们代码的耦合性使得我们应用程序的扩展更加方便。就本身而言springboot的事件机制是通过观察者设计模式实现。通过ApplicationListener事件监听器实现事件的发布与订阅。我们以登录场景为例假如用户登录之后需要发送登录通知、发送邮件通知、发送签到通知如果按照常规做法我们可以顺序执行以上操作但是使用springboot的事件机制我们可以发布一个登录的事件消息然后各自去消费登录这个事件消息这样达到业务解耦的效果。 正文 ①创建一个事件发布器用于发送自定义的消息事件 - 实现代码通过实现ApplicationEventPublisherAware 接口 package com.yundi.isbc.event.publish;import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.stereotype.Component;Component public class MyApplicationEventPublisherAware implements ApplicationEventPublisherAware {private ApplicationEventPublisher applicationEventPublisher;Overridepublic void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {this.applicationEventPublisher applicationEventPublisher;}/*** 消息事件发布* param applicationEvent*/public void publishEvent(ApplicationEvent applicationEvent) {applicationEventPublisher.publishEvent(applicationEvent);} }②创建一个登录的自定义消息事件  - 实现代码通过继承ApplicationEvent事件实现自定义消息事件 package com.yundi.isbc.event.publish;import com.yundi.isbc.entity.User; import org.springframework.context.ApplicationEvent;public class LoginApplicationEvent extends ApplicationEvent {public LoginApplicationEvent(User user) {super(user);} } ③创建一个用户实体类用于数据的传输 - 实现代码 package com.yundi.isbc.entity;import lombok.Data; import lombok.experimental.Accessors;Accessors(chain true) Data public class User {/*** 用户名*/private String username;/*** 密码*/private String password; }④创建一个控制器LoginController用于登录业务处理并发布登录事件 - 实现代码 package com.yundi.isbc.controller;import com.yundi.isbc.entity.User; import com.yundi.isbc.event.publish.LoginApplicationEvent; import com.yundi.isbc.event.publish.MyApplicationEventPublisherAware; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/index) public class LoginController {Autowiredprivate MyApplicationEventPublisherAware myApplicationEventPublisherAware;GetMapping(login)public String login() {//发布登录事件myApplicationEventPublisherAware.publishEvent(new LoginApplicationEvent(new User().setUsername(xiaoming).setPassword(123456)));//todo 主流程业务处理return ok;}}- 代码说明 ⑤ 通过实现ApplicationListener接口实现登录通知消息的消费并做相关的业务处理 - 实现代码 package com.yundi.isbc.event.describe;import com.yundi.isbc.entity.User; import com.yundi.isbc.event.publish.LoginApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Service;Service public class LoginNotifyListen implements ApplicationListenerLoginApplicationEvent {public void accumulateLogin(User user) {System.out.println(登录业务 user);}Overridepublic void onApplicationEvent(LoginApplicationEvent event) {System.out.println(收到登录通知事件);User user (User) event.getSource();accumulateLogin(user);} }⑥通过EventListener方式订阅消息实现邮件业务处理该种方式更加灵活不用实现ApplicationListener接口 - 实现代码 package com.yundi.isbc.event.describe;import com.yundi.isbc.entity.User; import com.yundi.isbc.event.publish.LoginApplicationEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service;Service public class MailNotifyListen {public void mailNotify(User user) {System.out.println(邮件业务 user);}EventListenerpublic void onLoginEvent(LoginApplicationEvent loginApplicationEvent) {System.out.println(收到登录通知事件);User user (User) loginApplicationEvent.getSource();mailNotify(user);} }⑦通过EventListener方式订阅消息实现签到业务处理 -实现代码 package com.yundi.isbc.event.describe;import com.yundi.isbc.entity.User; import com.yundi.isbc.event.publish.LoginApplicationEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service;Service public class SignNotifyListen {public void signNotify(User user) {System.out.println(签到业务 user);}EventListenerpublic void onLoginEvent(LoginApplicationEvent loginApplicationEvent) {System.out.println(收到登录通知事件);User user (User) loginApplicationEvent.getSource();signNotify(user);} }⑧验证结果访问登录接口查看控制台所有订阅事件的业务都能正常订阅消费 结语 关于springboot自定义事件的发布和订阅的内容到这里就结束了我们下期见。。。。。。
http://www.hkea.cn/news/14322578/

相关文章:

  • 北京建站模板厂家做外贸都用什么网站
  • 定制网站建设多少钱秀屿网站建设
  • 网站建设数据库设计河南网站备案所需资料
  • 手机网站建设策划方案怎么搭建网页服务器
  • cnnic可信网站必须做吗?中天建设集团有限公司资质等级
  • 想学做网站可以自学吗做网站心得体会
  • 安徽网站开发推荐vps 网站打不开
  • 深圳网站建设html5wordpress标题字体大小
  • 有了域名与服务器怎么建网站管理咨询公司工作简报
  • 合肥企业网站建工程资质加盟分公司
  • dede网站地图做医疗竞价网站
  • 杭州群游科技网站做的魔域东营网约车
  • 网站建设 概念股青岛工程建设管理信息网官方网站
  • 互联网推广网站建设国外的智慧城市建设网站
  • 哪些公司网站建设好河北斯皮尔网站建设
  • 网上做网站资金大概多少阜阳学校网站建设
  • 网站建设参考网站的说明百度官方网站首页
  • 工业和信息化部网站备案管理系统omega欧米茄手表官网
  • 网站备案 哪个省最松aspcms网站地图生成
  • 网站建设引擎深圳 高端 建站公司
  • 卧龙区微网站开发西安高校网站建设
  • 做水果网站特点分析报告wordpress授权
  • 家居网站建设渠道北京网络推广平台
  • 青岛专业网站排名推广南京网站建设推南京网站建设设计
  • 新乐网站制作价格微网站开发程序
  • wordpress dux 1.5 邮件重庆seo教程
  • 网站栏目方案wordpress 印象码
  • 北京展览馆网站建设网络工程专业学什么课程
  • 企业3合1网站建设公司工作室 网站 备案
  • php网站微信登录怎么做海口房产网站建设