类 UserRoleCache
java.lang.Object
net.sohelp.boot.admin.core.cache.UserRoleCache
- 所有已实现的接口:
ISohelpCache
用户岗位缓存(永不过期,按需失效)
Key 规则:"{userId}" → 岗位 ID 字符串列表 JSON。
NONE 模式每次直接查库。
该缓存组件负责管理用户所属的岗位(角色)ID 列表。管理员和开发者
自动拥有其所在租户下的全部岗位;普通用户则根据 pb_user_role
表中的关联记录获取已分配的岗位。缓存采用懒加载策略,首次访问时
从数据库加载并写入缓存。
- 从以下版本开始:
- 2023/12/28 10:33
- 作者:
- AaronFung
-
构造器详细资料
-
UserRoleCache
public UserRoleCache()
-
-
方法详细资料
-
init
@PostConstruct public void init()初始化缓存提供者。在 Bean 构造完成后自动调用,通过
SohelpCacheManager创建 名称为"user_role"、永不过期(TTL=0)的缓存提供者。 -
cacheName
获取缓存名称。- 指定者:
cacheName在接口中ISohelpCache- 返回:
- 缓存名称字符串
"user_role"
-
cacheDescription
获取缓存的中文描述信息。- 指定者:
cacheDescription在接口中ISohelpCache- 返回:
- 缓存描述字符串
"用户岗位缓存"
-
reload
public void reload()重新加载整个缓存。清空所有已缓存的用户岗位数据,下次访问时将重新从数据库加载。
- 指定者:
reload在接口中ISohelpCache
-
get
@Comment("\u6839\u636e\u7528\u6237ID\u83b7\u53d6\u5c97\u4f4d\u5217\u8868") public List<String> get(@Comment("\u7528\u6237ID") Long userId) 获取指定用户的岗位ID列表。当缓存提供者处于 NONE 模式时,每次调用都直接查询数据库; 否则先检查缓存是否命中,未命中则触发
reload(Long)加载后返回。- 参数:
userId- 用户ID,不能为null- 返回:
- 该用户所属的岗位ID字符串列表,若查询失败则返回空列表
-
remove
@Comment("\u5220\u9664\u7528\u6237\u7f13\u5b58") public void remove(@Comment("\u7528\u6237ID") long userId) 删除指定用户的岗位缓存。从缓存中移除该用户的岗位数据,下次访问时将重新从数据库加载。
- 参数:
userId- 用户ID
-
reload
@Comment("\u91cd\u65b0\u52a0\u8f7d") public void reload(@Comment("\u7528\u6237ID") Long userId) throws SQLException 根据用户ID重新从数据库加载岗位信息并写入缓存。先删除旧缓存,然后查询用户所属岗位列表,写入缓存。 使用
synchronized保证同一时刻只有一个线程执行加载。- 参数:
userId- 用户ID,不能为null- 抛出:
SQLException- 当数据库查询失败时抛出
-