javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSource,id=xxxx的解决办法
问题分析
个人分析:最后更新代码时主要功能是涉及多数据源切换进行数据存储,刚好该错误报的又是连接池的问题,判断应该是多数据源配置后调用多数据源调用方法有问题,导致项目启动失败。
@DataSource("dataSource1")
@DataSource("dataSource2")
问题解决办法
一、找到多数据源配置位置,查看两个数据源的name是否是一致的,如果该位置是一致的,只需要将其中的一个name换为其他名字即可。(其实这并不是最终的问题所在)
<property name="name" value=""/>
二、我的出现该报错的后面还出现了循环依赖的问题导致项目无法启动(大胆猜测该错误才是导致项目无法启动的真正原因),通过注释注解的办法找到循环依赖出现的位置,然后把循环依赖的类拆解出来即可解决循环依赖的问题。
三、为了印证是否是后面的错误导致的我将<property name="name" value=""/>
的value又换成原来相同的value,重启项目,项目成功运行,印证了我的猜想。主要的错误是多数据源中的方法存在问题导致tomcat误判断启动了两个一模一样的服务。
多数据源无法切换数据源的解决思路
spring中使用多数据源无法使用事务,父类有事务,子类中无法切换数据源,可以将子类中另一个方法拆解到controller层即可切换数据源。