關於Spring3 + Mybatis3整合時,多數據源動態切換的問題(二)

上一篇博客提到跟mybatis項目組的commiter發過郵件,後來得到了郵件回覆。說是通過AbstractRoutingDataSource是可以做到的。於是我再繼續的分析一下,寫了一個測試,並將之前寫的一些零散代碼整理,重構了一下,丟到了gitHub上。地址是: https://github.com/amoszhou/spring-dynamic


關於gitHub,以前只是一直在關注,自己並沒有真正使用。這次果斷試了一下,確實很爽。想想以前自己寫的很多東西,都是搞個U盤帶着,現在雲時代,gitHub的優勢就體現得很明顯。


具體代碼就不多說了,大家可以去gitHub上拉起來看,整是項目是完整的,也有測試入口。


說說這個動態數據源吧,主要有幾個注意點:

1.打包,編譯必須用AspectJ。因爲Spring AOP不支持攔截方法體中的方法調用(比如說A方法中調用B方法,Spring AOP只能攔截到A方法)

2.在具體的項目中,需要寫一個Aspect繼承至ChooseDataSourceAspect,並標記成@Aspect。因爲這個項目被打成jar以後,ChooseDataSourceAspect是切不到外面的,故而將它設計成abstract的,在具體項目中繼承即可,不需要寫任何實現。

3.在要切換數據源的方法上  @ChooseDataSource("ds_1")即可。

4.如果開啓事務的話,一定要在事務開啓之前切換數據源。要規避要事務開啓之後切換數據源。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章