記錄一次AOP失效的原因

之前寫的校驗是否重複的AOP,在同事使用時,出現了不能成功進入切面的異常。
只有一個地方不一樣,我是在service中執行biz的校驗方法,在校驗方法上加切面
而同事是在biz中去執行biz的校驗方法,在校驗方法上加切面
這就是問題所在了。因爲biz調biz自己的方法,屬於內部調用,內部調用,aspectJ不響應。
這其實就好理解了,因爲面向切面編程,執行方法其實是bean來執行,這個bean不是真的對象,而是代理對象,是使用反射執行。
而內部調用,則不需要獲取bean,自然切面失效。
有個辦法,就是內部調用改成使用代理對象執行

	if(null != AopContext.currentProxy()){  
        AopContext.currentProxy().method2();  
    }else{  
        method2();  
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章