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

网站开发的基本流程港口建设征收 申报网站

网站开发的基本流程,港口建设征收 申报网站,营销策划与推广,wordpress前台文章文章目录 使用示例#xff1a;原理简析#xff1a; 前言#xff1a;ApplicationListener 是spring提供的一个监听器#xff0c;它可以实现一个简单的发布-订阅功能#xff0c;用有点外行但最简单通俗的话来解释#xff1a;监听到主业务在执行到了某个节点之后#xff0c… 文章目录 使用示例原理简析 前言ApplicationListener 是spring提供的一个监听器它可以实现一个简单的发布-订阅功能用有点外行但最简单通俗的话来解释监听到主业务在执行到了某个节点之后在监听器里面做出相应的其它业务变更。下面我们具体看段代码则能很快的理解: 再次推荐博主原创idea插件 Equals Inspection , 如果经常使用Objects.equals方法相信这个插件可以有所帮助 欢迎各位前往idea插件marketplace免费下载 使用示例 java代码 首先定义一个业务实体类实体类定义字段、get set方法、构造函数 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor/*** 模拟业务对象实体类* author csdn:孟秋与你*/ public class MyBizEntity {private String name;private Integer age; } 再定义一个事件事件继承ApplicationEvent import org.springframework.context.ApplicationEvent;/*** 自定义事件继承ApplicationEvent* author csdn:孟秋与你*/ public class MyEvent extends ApplicationEvent {public MyEvent(Object source) {super(source);}public MyEvent() {// java基础如果父类只有有参构造 子类需要使用其它构造函数 必须在构造函数第一行调用super 因为子类也是调用父类的构造函数super(null);// do other} }定义一个监听器实现ApplicationListener接口: import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component;/*** 监听事件*/ Component public class MyApplicationListener implements ApplicationListener {Overridepublic void onApplicationEvent(ApplicationEvent applicationEvent) {// 必须判断自己要的类型 因为会监听到所有继承ApplicationEvent的事件if (applicationEvent instanceof MyEvent) {Object source applicationEvent.getSource();MyBizEntity bizEntity (MyBizEntity) source;System.out.println(bizEntity.getName() ------------name);}} } 写一个接口进行测试, 此时监听器就能打印输出了 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RequestMapping(/test/listener) RestController public class MainBizController {Autowiredprivate ApplicationContext context;GetMappingpublic String test() {// do something// 模拟要传递的业务对象MyBizEntity bizEntity new MyBizEntity(name,18);MyEvent event new MyEvent(bizEntity);// 上下文 发布事件context.publishEvent(event);return success;} } 原理简析 为什么发布了事件监听器就能够监听到呢 其实原理很简单就是spring进行了一个朴实无华的直接调用, 我们来看看源码 context.publishEvent默认是调用AbstractApplicationContext类的publishEvent方法而publishEvent方法里面调用了SimpleApplicationEventMulticaster 类的multicastEvent方法。 SimpleApplicationEventMulticaster: 首先会获取所有实现了ApplicationListener的监听器 get by type就可以获取到, 接着会执行 invokeListener方法 我们看看最后doInvokeListener 做了什么 通过上面源码链路我们不难发现 其实就是调用了publishEvent方法后spring在我们不轻易能看到的地方 去调用了一下监听器的onApplicationEvent 方法而已,通过源码我们也可以看到 默认是同步调用没有定义taskExecutor时, 本质上是一个解耦把原本可能要写在一起的业务代码拆分了。
http://www.zqtcl.cn/news/313401/

相关文章:

  • 嘉兴网站推广优化公司wordpress显示系统
  • 网站建站定做空间里怎么放多个网站
  • 清远市企业网站seo联系方式深圳人才市场现场招聘信息
  • 网站制作在哪能看网站开发前台开发
  • 一般网站用什么数据库游戏源码搭建
  • 做国外搞笑网站上海建设工程网站
  • 泰州免费网站建站模板网站建设用python怎么样
  • 优秀作文网站都有哪些企业网站的开发与应用
  • 织梦做网站被告如何再工商局网站做设备抵押
  • 什么是自适应网站怎么做国际购物网站
  • 促销活动推广文案网站加alt属性对优化有影响吗
  • 平湖网站改版洛卡博网站谁做的
  • 买卖平台有哪些网站三航奔腾建设有限公司官方网站
  • 网站建设的企业wordpress teamtalk
  • 公司起名字大全免费查询网站的哪些标签需要优化
  • 装修公司手机网站模板网络营销品牌有哪些
  • 如何保证网站安全在线的crm系统软件
  • 网站名称与主体性质不符wordpress首页锚点
  • 有口碑的常州网站建设传统网站建设
  • 大学网站建设排名金乡网站建设
  • 手机网站开发步骤徐州网站制作怎么做
  • 南通网站优化找哪家推荐做素菜的网站
  • 中国十大网站域名界面设计最好的网站
  • 苍山做网站北京便宜网站建设
  • 广州公司网站制作招聘信息汕头网站推广哪家好
  • 登录建设官方网站品牌营销专家
  • 天津模板建站哪家好wordpress标题换行显示不全
  • 杭州房地产网站建设网站建设开发公司推荐指数
  • 建设部网站上怎样查询企业业绩做淘宝联盟网站要多少钱
  • 宣武上海网站建设网站导购话术