设计模式-观察者模式(ApplicationListener)

观察者模式的机制:

ApplicationContext发布ApplicationEvent时,ApplicationListener就会自动触发

实现观察者模式的三个必要条件:

①:自定义事件(event)继承 ApplicationEvent(也有Spring 自己提供的事件)

// 事件
public class MyApplicationEvent extends ApplicationEvent {

    public MyApplicationEvent(Object source) {
        super(source);
    }
}

②:监听器(listener)实现 ApplicationListener(对自己定义事件进行监听)

public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {

    @Override
    public void onApplicationEvent(MyApplicationEvent myApplicationEvent) {
        System.out.println("lister start!!!!!!!");
    }
    
}

③:ApplicationContext添加监听器(此处可以依赖注入)

    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(CloudBiz1Application.class, args);
        applicationContext.addApplicationListener(new MyApplicationListener());
    }

再回到观察者模式机制:

ApplicationContext发布ApplicationEvent时,ApplicationListener就会自动触发

    @RequestMapping("pl")
    public String haha(@RequestBody @Validated ApiInDto apiIn, BindingResult result) throws Exception {
        hasError(result);
        CompletableFuture<List<String>> listCompletableFuture = CompletableFuture
            .supplyAsync(() -> publicService.add());
        CompletableFuture<List<String>> listCompletableFuture1 = CompletableFuture.supplyAsync(()
            -> domoService.mins()
        );
        //发布事件
        applicationContext.publishEvent(new MyApplicationEvent("sucessfully"));
        return "HAHA";
    }

postman发送请求后,此时控制台↓

(当监听器观察到ApplicationContext发布事件时,监听器里的逻辑就自动触发了)

 lister start!!!!!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值