Sa-Token事件发布,观察者模式

本文详细介绍了Satoken框架中的观察者模式应用,包括SaTokenListener接口、SaTokenListenerForLog和SaTokenListenerForSimple类,以及如何在SpringBoot中自动注册和发布事件的过程。
摘要由CSDN通过智能技术生成

个人博客:无奈何杨(wnhyang)

个人语雀:wnhyang

共享语雀:在线知识共享

Github:wnhyang - Overview


前文提到很多次satoken的事件发布,使用的是观察者模式,这次就来探究一下,很简单的。

参考官网:全局侦听器

观察者模式

简介:观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。

sa-token-corecn.dev33.satoken.listener包下有

SaTokenListener

上面就是它的所有抽象方法,如注释描述的那样:你可以通过实现此接口在用户登录、退出等关键性操作时进行一些AOP切面操作。

SaTokenListenerForLog

框架中唯二实现SaTokenListener接口的类。

之前贴图的satoken日志都是由此类实现的。

SaTokenListenerForSimple

/**
 * Sa-Token 侦听器,默认空实现 
 * 
 * <p> 对所有事件方法提供空实现,方便开发者通过继承此类快速实现一个可用的侦听器 </p>
 * 
 * @author click33
 * @since 1.31.0
 */
public class SaTokenListenerForSimple implements SaTokenListener {
    ...
}

SaTokenEventCenter

/**
 * Sa-Token 事件中心 事件发布器
 *
 * <p> 提供侦听器注册、事件发布能力 </p>
 * 
 * @author click33
 * @since 1.31.0
 */
public class SaTokenEventCenter {

	// --------- 注册侦听器 
	
	private static List<SaTokenListener> listenerList = new ArrayList<>();
	
	static {
		// 默认添加控制台日志侦听器 
		listenerList.add(new SaTokenListenerForLog());
	}

    ...
}

SaTokenEventCenter从命名就可以知道这是satoken的事件发布中心类。主要属性就是List<SaTokenListener> listenerList,也就是所有侦听器,其方法主要分为两类:一类是管理侦听器,另一类就是事件发布,而且所有方法都是静态方法。

自动注册侦听器

Spring环境中,使用Spring Boot自动注入,还是要回到sa-token-spring-boot-autoconfigSaBeanInject中有如下方法帮助完成侦听器的注册。

/**
 * 注入侦听器Bean
 * 
 * @param listenerList 侦听器集合 
 */
@Autowired(required = false)
public void setSaTokenListener(List<SaTokenListener> listenerList) {
    SaTokenEventCenter.registerListenerList(listenerList);
}

事件发布

完成侦听器的注册后,就可以愉快的事件发布了。即调用SaTokenEventCenter.doXxx方法。

/**
 * 事件发布:xx 账号登录
 * @param loginType 账号类别
 * @param loginId 账号id
 * @param tokenValue 本次登录产生的 token 值 
 * @param loginModel 登录参数
 */
public static void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) {
    for (SaTokenListener listener : listenerList) {
        listener.doLogin(loginType, loginId, tokenValue, loginModel);
    }
}

注意这里是同步事件发布,非异步。

写在最后

拙作艰辛,字句心血,望诸君垂青,多予支持,不胜感激。


个人博客:无奈何杨(wnhyang)

个人语雀:wnhyang

共享语雀:在线知识共享

Github:wnhyang - Overview

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无奈何杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值