文章目录
- 内置解析器
- 自定义解析器
- 相关文章
🗯️ 上节回顾:前节中,了解了 dynamic-datasource 的动态添加/移除数据源。
👉 本节目标:了解 dynamic-datasource 的进阶用法 - 动态解析数据源。
动态解析数据源:指数据源切换是不固定的,可以根据域名,根据 header 参数,根据 session 参数,根据方法变量等来动态切换。多使用于多租户系统,支持自定义扩展。
内置解析器
解析数据源的接口为 DsProcessor
,其默认有三个实现类:
- DsJakartaHeaderProcessor:根据请求 header 参数解析数据源,以#header 开头
- DsJakartaSessionProcessor:根据 session 参数解析数据源,以#session 开头
- DsSpelExpressionProcessor:使用 SpEL 解析数据源,以#开头
其顺序为,先 header、再 session,最后 SpEL:
示例:
@DS("#session.tenantName") // 从session获取
public List selectSpelBySession() {
return userMapper.selectUsers();
}
@DS("#header.tenantName") // 从header获取
public List selectSpelByHeader() {
return userMapper.selectUsers();
}
@DS("#tenantName") // 使用 spel 从参数获取
public List sel