项目中,利用atlas对mysql数据库进行了读写分离。
当时配置了去从库读数据。
当用数据库工具连接代理测试时,一切正常。
当在项目中使用框架mybatis连数据库时,却都直接去主库读写数据了。
自己写个main方法 用jdbc连接也是正常的。一用mybatis框架就不正常了,难道atlas对mybatis不支持吗?
于是各种百度,谷歌。。。
最后发现原因:如果有事务存在的话,atlas就强制走主库。而这个方法类上偏偏添加了事务@Transactional
解决办法在方法上加上@Transactional(propagation=Propagation.NOT_SUPPORTED)即可。