优化 SaTokenDao 组件更换时的逻辑

This commit is contained in:
click33 2023-10-17 12:14:42 +08:00
parent 0f7e1e977c
commit 6977d3d136
3 changed files with 25 additions and 14 deletions

View File

@ -103,9 +103,12 @@ public class SaManager {
}
private static void setSaTokenDaoMethod(SaTokenDao saTokenDao) {
if (SaManager.saTokenDao != null) {
SaManager.saTokenDao.onChange();
SaManager.saTokenDao.destroy();
}
SaManager.saTokenDao = saTokenDao;
if (SaManager.saTokenDao != null) {
SaManager.saTokenDao.init();
}
}
public static SaTokenDao getSaTokenDao() {
if (saTokenDao == null) {

View File

@ -201,11 +201,18 @@ public interface SaTokenDao {
List<String> searchData(String prefix, String keyword, int start, int size, boolean sortType);
// --------------------- 实例相关 ---------------------
// --------------------- 生命周期 ---------------------
/**
* SaManager.saTokenDao 变更时调用该方法
* SaTokenDao 实例被装载时触发
*/
default void onChange() {
default void init() {
}
/**
* 当此 SaTokenDao 实例被卸载时触发
*/
default void destroy() {
}
}

View File

@ -40,14 +40,6 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao {
* 存储数据过期时间的集合单位: 毫秒, 记录所有 key 的到期时间 注意存储的是到期时间不是剩余存活时间
*/
public Map<String, Long> expireMap = new ConcurrentHashMap<>();
/**
* 构造函数
*/
public SaTokenDaoDefaultImpl() {
initRefreshThread();
}
// ------------------------ String 读写操作
@ -261,11 +253,20 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao {
this.refreshThread.start();
}
/**
* 结束定时任务不再定时清理过期数据
* 组件被安装时开始刷新数据线程
*/
@Override
public void onChange() {
public void init() {
initRefreshThread();
}
/**
* 组件被卸载时结束定时任务不再定时清理过期数据
*/
@Override
public void destroy() {
this.refreshFlag = false;
}
}