当将数据库相关的配置内容迁移至Nacos的配置文件中心时会出现'DbType'无法正常初始化的错误。
andriyhuang opened this issue · comments
碰到问题,请在 https://github.com/YunaiV/yudao-cloud/issues 搜索是否存在相似的 issue。
不按照模板提交的 issue,会被系统自动删除。
基本信息
- ruoyi-vue-pro 版本:v2.0.0
- 操作系统:Windows
- 数据库:MySQL
你猜测可能的原因
(必填)我花费了 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
两个属性的配置。
报错信息
带上必要的截图