diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java index ee1f552e..a2dea029 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java @@ -102,8 +102,8 @@ public class SaManager { SaTokenEventCenter.doRegisterComponent("SaTokenDao", saTokenDao); } private static void setSaTokenDaoMethod(SaTokenDao saTokenDao) { - if((SaManager.saTokenDao instanceof SaTokenDaoDefaultImpl)) { - ((SaTokenDaoDefaultImpl)SaManager.saTokenDao).endRefreshThread(); + if (SaManager.saTokenDao != null) { + SaManager.saTokenDao.onChange(); } SaManager.saTokenDao = saTokenDao; } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java index 48682c74..75a46cd4 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java @@ -199,6 +199,13 @@ public interface SaTokenDao { * @return 查询到的数据集合 */ List searchData(String prefix, String keyword, int start, int size, boolean sortType); - - + + + // --------------------- 实例相关 --------------------- + + /** + * 当 SaManager.saTokenDao 变更时,调用该方法 + */ + default void onChange() { + } } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java index dc9cbae7..eae8d6e9 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java @@ -260,12 +260,12 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao { }); this.refreshThread.start(); } - + /** * 结束定时任务,不再定时清理过期数据 */ - public void endRefreshThread() { + @Override + public void onChange() { this.refreshFlag = false; } - }