ruoyi-vue-pro 全新 Cloud 版本,优化重构所有功能。基于 Spring Cloud Alibaba + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城、CRM、ERP、AI 大模型等功能。你的 ⭐️ Star ⭐️,是作者生发的动力!
16.39k
stars
4.02k
forks
source link
当将数据库相关的配置内容迁移至Nacos的配置文件中心时会出现'DbType'无法正常初始化的错误。 #133
Closed
andriyhuang closed 8 months ago
碰到问题,请在 https://github.com/YunaiV/yudao-cloud/issues 搜索是否存在相似的 issue。
不按照模板提交的 issue,会被系统自动删除。
基本信息
你猜测可能的原因
(必填)我花费了 2-4 小时自查,发现可能的原因是:经调试发现如果
spring.datasource.dynamic.primary
和spring.datasource.dynamic.datasource.url
两个参数配置迁移至Nacos的配置中心后,导致cn.iocoder.yudao.framework.mybatis.config.IdTypeEnvironmentPostProcessor
类的postProcessEnvironment
方法被执行时还未初始化执行Nacos的配置加载方法,即com.alibaba.cloud.nacos.client.NacosPropertySourceLocator
的执行优先级在SpringBoot初始化的时候非常低。postProcessEnvironment
方法在第一次执行时是加载本地的bootstrap.yaml
文件,第二次执行时是本地的application.yaml
文件,最后才会是Nacos的初始化加载远程配置服务工作,从而影响到了yudao-spring-boot-start-mybatis
组件初始化DbType
时的逻辑,进而影响到后续数据库ID字段类型和尾行查询的处理方法。复现步骤
第一步, 将
spring.datasource.dynamic
相关的配置全部迁移至Nacos配置服务中心。第二步, 移除模块中本地所有的
application.yaml
相关的配置文件,只保留bootstrap.yaml
基础配置内容。第三步, 启动项目调试,会发现
cn.iocoder.yudao.framework.mybatis.config.IdTypeEnvironmentPostProcessor
类中执行postProcessEnvironment
方法调用getDbType
方法获取数据库类型时无法正常读取到primary
和url
两个属性的配置。报错信息
带上必要的截图