我也遇到了這個問題,仔細debug了一下,結論如下:
1. AOP可以觸發數據源字符串的切換,這個沒問題
2. 數據源真正切換的關鍵是 AbstractRoutingDataSource 的 determineCurrentLookupKey() 被調用,此方法是在open connection時觸發
3. 事務是在connection層面管理的,啟用事務后,一個事務內部的connection是復用的,所以就算AOP切了數據源字符串,但是數據源並不會被真正修改
綜上所述:
如果要使用事務,還是別用determineCurrentLookupKey()這種方法切數據源了,得配置多個才行
