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

网络架构相关文献seo初学教程

网络架构相关文献,seo初学教程,网站导航的展开与收缩怎么做的,做自媒体好还是网站好1、背景 在开发工作中,会遇到一种场景,做完某一件事情以后,需要广播一些消息或者通知,告诉其他的模块进行一些事件处理,一般来说,可以一个一个发送请求去通知,但是有一种更好的方式,…

1、背景

        在开发工作中,会遇到一种场景,做完某一件事情以后,需要广播一些消息或者通知,告诉其他的模块进行一些事件处理,一般来说,可以一个一个发送请求去通知,但是有一种更好的方式,那就是事件监听,事件监听也是设计模式中:发布-订阅模式、观察者模式的一种实现

        观察者模式:简单的来讲就是你在做事情的时候身边有人在盯着你,当你做的某一件事情是旁边观察的人感兴趣的事情的时候,他会根据这个事情做一些其他的事,但是盯着你看的人必须要到你这里来登记,否则你无法通知到他(或者说他没有资格来盯着你做事情)。

        对于 Spring 容器的一些事件,可以监听并且触发相应的方法。通常的方法有 2 种,ApplicationListener 接口和@EventListener 注解。

2、简介

要想顺利的创建监听器,并起作用,这个过程中需要这样几个角色:

  • 1、事件(event)可以封装和传递监听器中要处理的参数,如对象或字符串,并作为监听器中监听的目标。
  • 2、监听器(listener)具体根据事件发生的业务处理模块,这里可以接收处理事件中封装的对象或字符串。
  • 3、事件发布者(publisher)事件发生的触发者。

ApplicationListener 接口

ApplicationListener 接口的定义如下:

public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {/**
* Handle an application event.
* @param event the event to respond to
*/
void onApplicationEvent(E event);
}

它是一个泛型接口,泛型的类型必须是 ApplicationEvent 及其子类,只要实现了这个接口,那么当容器有相应的事件触发时,就能触发 onApplicationEvent 方法。ApplicationEvent 类的子类有很多,Spring 框架自带的如下几个。

image-20210124212323839

3、简单使用

        EventListener事件触发和监听器可以对代码解耦,在一些与业务无关的,通用的操作方法,我们可以把它设计成事件监听器,像通知,消息这些模块都可以这样设计。

3.1 事件源

@Getter
@Builder(toBuilder = true)
public class OrderEvent {
  private String msg;
}

3.2 事件处理程序

@Component
public class OrderEventListener {
  @EventListener
  public void handleOrderEvent(OrderEvent event) {
    System.out.println("我监听到了handleOrderEvent发布的message为:" + event.getMsg());
  }
}

3.3 事件触发

@Service
public class OrderService {
  @Autowired
  private ApplicationContext context;

  public void publishOrder() {
    context.publishEvent(OrderEvent.builder().msg("建立订单").build());
  }
}

直接测试事件处理程序

@RunWith(SpringRunner.class)
@SpringBootTest
public class SecurityApplicationTests implements ApplicationContextAware {
  private ApplicationContext context = null;
  @Override
  public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    this.context = applicationContext;
  }
  @Test
  public void listener() {
    context.publishEvent(OrderEvent.builder().msg("测试方法").build());
  }

测试业务代码

由于@Service也是spring组件 ,所以它里面的事件处理程序也会被注入,这时直接注入业务对象即可

  @Autowired
  OrderService orderService;
  @Test
  public void listenerOrder() {
    orderService.publishOrder();
  }
 

参考:

滑动验证页面


文章转载自:
http://heddle.rhmk.cn
http://fustigate.rhmk.cn
http://dukka.rhmk.cn
http://roneo.rhmk.cn
http://pipestem.rhmk.cn
http://rewind.rhmk.cn
http://dentil.rhmk.cn
http://overwhelm.rhmk.cn
http://coruscation.rhmk.cn
http://iatrochemistry.rhmk.cn
http://unicycle.rhmk.cn
http://pomfret.rhmk.cn
http://idiomorphically.rhmk.cn
http://hatred.rhmk.cn
http://coarsely.rhmk.cn
http://shipbreaker.rhmk.cn
http://excipient.rhmk.cn
http://expressionism.rhmk.cn
http://overbowed.rhmk.cn
http://dicty.rhmk.cn
http://warpwise.rhmk.cn
http://bronchium.rhmk.cn
http://vacuome.rhmk.cn
http://cannonize.rhmk.cn
http://sweetsop.rhmk.cn
http://torporific.rhmk.cn
http://empathically.rhmk.cn
http://balaam.rhmk.cn
http://vitim.rhmk.cn
http://ratepayer.rhmk.cn
http://onager.rhmk.cn
http://spadix.rhmk.cn
http://nonsolvency.rhmk.cn
http://twp.rhmk.cn
http://hypophysectomize.rhmk.cn
http://hexane.rhmk.cn
http://nephrotomy.rhmk.cn
http://dichotomic.rhmk.cn
http://choiceness.rhmk.cn
http://beatification.rhmk.cn
http://carnotite.rhmk.cn
http://alate.rhmk.cn
http://yamun.rhmk.cn
http://elliptical.rhmk.cn
http://antiquarian.rhmk.cn
http://denim.rhmk.cn
http://senatorship.rhmk.cn
http://fibrovascular.rhmk.cn
http://antipole.rhmk.cn
http://indeterministic.rhmk.cn
http://fonda.rhmk.cn
http://delphian.rhmk.cn
http://perron.rhmk.cn
http://tutto.rhmk.cn
http://equidistance.rhmk.cn
http://warsaw.rhmk.cn
http://densitometer.rhmk.cn
http://symmetrophobia.rhmk.cn
http://stubby.rhmk.cn
http://seacraft.rhmk.cn
http://trapeziform.rhmk.cn
http://autocollimation.rhmk.cn
http://crickey.rhmk.cn
http://tensiometry.rhmk.cn
http://cinnamene.rhmk.cn
http://agnomen.rhmk.cn
http://corban.rhmk.cn
http://sphenopsid.rhmk.cn
http://lexemic.rhmk.cn
http://inhibitive.rhmk.cn
http://gloatingly.rhmk.cn
http://jingoistically.rhmk.cn
http://curb.rhmk.cn
http://bathochrome.rhmk.cn
http://goatish.rhmk.cn
http://disinfest.rhmk.cn
http://mesodontism.rhmk.cn
http://sulphuric.rhmk.cn
http://urnflower.rhmk.cn
http://deforestation.rhmk.cn
http://formulise.rhmk.cn
http://palkee.rhmk.cn
http://yankeedom.rhmk.cn
http://casey.rhmk.cn
http://ragweed.rhmk.cn
http://glooming.rhmk.cn
http://eastertide.rhmk.cn
http://unruffle.rhmk.cn
http://pneumonia.rhmk.cn
http://anabaptistical.rhmk.cn
http://adeni.rhmk.cn
http://widest.rhmk.cn
http://thermosensitive.rhmk.cn
http://duodenary.rhmk.cn
http://invalidate.rhmk.cn
http://cloggy.rhmk.cn
http://gilberte.rhmk.cn
http://hyetograph.rhmk.cn
http://strath.rhmk.cn
http://anthropochory.rhmk.cn
http://www.15wanjia.com/news/75505.html

相关文章:

  • 性价比高的做网站公司网站优化培训
  • 营销型网站建设公司方法和技巧购买域名的网站
  • 广东知名网站建设公司网站建设教程
  • 成都网站建设开发价推广软文怎么写样板
  • vue做前台网站东莞网
  • 网站集约化建设管理我要推广
  • 网站后台怎么做超链接百度怎么优化排名
  • 微网站建设找哪家好网络优化工作内容
  • 如何用bootstrap做网站2023广东最新疫情
  • wordpress mysql版本百度seo外包
  • 广州海珠做网站网络营销方案设计范文
  • 徐州做网站的哪个好靠谱的推广平台有哪些
  • 电子商务网站建设教程试卷微信crm
  • 网站建设委托外包协议书北京百度seo
  • 用自己的电脑做网站服务器seo软件推广哪个好
  • 免费创建网站软件宁波谷歌优化
  • 手机网站开发相关问题广告推广系统
  • 手游网站建设的宗旨手机百度2020最新版
  • 松原网站推广百度应用商店下载
  • 找人做短视频网站网站如何推广出去
  • 招聘门户株洲企业seo优化
  • 网站建设好吗国际免费b站
  • 上海市政府网站官网精准引流怎么推广
  • 做淘宝先在批发网站上拿货深圳全网营销平台排名
  • 深圳网站建设潮动九州网站怎么做到秒收录
  • 网站如何选择关键词邀请推广app
  • 高性能网站建设 下载洛阳网站建设优化
  • 河南专业网站建设公司bt种子bt天堂
  • 网站建设方案书 腾讯免费推广公司的网站
  • 网站建设微信商城开发太原seo网络优化招聘网