考慮與此類似關於跨領域關注的有趣的AOP問題?
public void addObject(Long sessionId, Long clientId, Dom obj){...}
現在每個域POJO(Dom
)方法一組波達都有sessionId
屬性和每個插入,更新或刪除域對象一個sessionId
必須setSessionId(Long sessionId)
如此傳遞我們可以知道誰做了什麼。但似乎這切入了所有數據訪問的內容,我們和我認爲AOP將成爲將sessionId
插入@Before(JoinPoint)
或@Around(ProceedingJoinPoint)
建議的好工具。這實際上可行嗎?這些DAO大部分都是基於Hibernate的一些Spring StoredProcedure
。
我很困惑......如果sessionId是Dom對象的一部分,爲什麼它也是DAo方法中的參數? – skaffman 2009-10-05 21:42:20
控制我的錯誤,但要澄清sessionId在代碼中手動(以編程方式)設置,但上面的方法是一個建議的解決方案,其中AOP可以插入sessionId而無需開發人員處理它。方法簽名是不正確的,因爲某些東西需要傳遞給sessionId的方法。建議會從實用程序代碼中檢索sessionId並插入它。 – 2009-10-05 21:50:41