BladeX-Boot 使用多数据源踩坑
73
2023-08-03
版本说明
Blade-Boot 3.1.1.RELEASE
问题及解决方法
错误1
错误信息:配置多数据后报错显示找不到数据源的url配置
解决方法:修改LauncherServiceImpl类中的
// PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "false");// enabled 原为 false
PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "true"); // 修改为 true
错误2
错误信息:启用多数据源后,在Blade官方自带的通知示例中,报租户(Tenant)相关错误
解决方法:问题出在 NoticeController 中使用了@TenantDS 租户数据源配置,如果仅仅是在 yml 中配置的多数据源这里可以将 @TenantDS 删掉
//@TenantDS 这里 <--
@RestController
@RequestMapping(AppConstant.APPLICATION_DESK_NAME + "/notice")
@AllArgsConstructor
@ApiSort(2)
@Api(value = "用户博客", tags = "博客接口")
public class NoticeController extends BladeController {
private final INoticeService noticeService;
... ...
错误3
错误信息:在做业务数据查询时,报错:找不到 xxx.blade_scope_data 表(表不存在)(xxx表示数据源代表的库名)
解决方法:参考 https://sns.bladex.cn/q-1448.html 中 gtfhao 的回答;复制 blade/BladeX-Tool 项目中 org.springblade.core.datascope.handler 的 BladeScopeModelHandler 类到 BladeX-Boot 项目中 org.springblade.common.scopedata 包中(需要新建包);在 BladeScopeModelHandler 中添加配置注解
package org.springblade.common.scopedata;
/**
* BladeScopeModelHandler
*
* @author Chill
*/
@Component // 这里 <--
@Master // 这里 <--
@RequiredArgsConstructor
public class BladeScopeModelHandler implements ScopeModelHandler {
private static final String SCOPE_CACHE_CODE = "dataScope:code:";
private static final String SCOPE_CACHE_CLASS = "dataScope:class:";
private static final String DEPT_CACHE_ANCESTORS = "dept:ancestors:";
private static final DataScopeModel SEARCHED_DATA_SCOPE_MODEL = new DataScopeModel(Boolean.TRUE);
private final JdbcTemplate jdbcTemplate;
- 0
- 0
-
分享