大家好,最近有個需求是客戶想要轉換資料庫。
不過要用漸進式的慢慢轉,
所以有些 table 短時間內都還要同步去做 update 操作。
目前是打算用 spring aop 跟 annotation 設定 dao method。
假設有兩隻 dao 跟 method 的設定,大概長這樣。
ClassDaoA.updateAAA(String a, String b, String c)
ClassDaoA2.updateAAA(String a, String b, String c)
若 call 到設定 annotation 的 ClassDaoA.updateAAA 的話,
打算再將傳入的 className ClassDaoA 字串最後加上 2,
再放入 Class.forName(className) 轉成我要的 ClassDaoA2 物件。
程式就連動跟著 call ClassDaoA2.updateAAA 進行 update 操作。
這樣設計可以不用動到原本的 dao code,整體變更幅度也比較小。
不過目前卡在,雖然我有辦法知道目前被 call dao 的
class name, method name, parameters name, value 等等資料。
但要 invoke 的時候,仍然要 cast obj 到 ClassDaoA2 才可以呼叫。
雖然程式支數少的時候可以手動設定沒問題,
(實際上要加上 annotation 進行同步的支數也蠻多的 @@)
不過還是想說這邊有沒有辦法利用 class name 去做動態的轉型?
或者有其他建議的方法可以處理我的需求呢?
先在此感謝。
以下附上程式的圖片