spring aop 沒法代理父類方法 的解決方法

首先是父類spring

cn.geektom.service.A代理

內部有個方法:method();code

而後是子類get

cn.geektom.service.B extends Aio

如今要對B類中的method() 進行aop代理。配置

若是按照以下配置aop

<aop:config>
		<aop:advisor advice-ref="a" pointcut="execution(* cn.geektom.service.B.method(..))" order="30" />
</aop:config>

是沒法作到代理的。spring aop 只會在B中尋找method()方法,而父類A的method()方法則會被忽略掉。因此必須修改一下service

<aop:config>
		<aop:advisor advice-ref="a" pointcut="execution(* cn.geektom.service.A.method(..)) and 
                       target(cn.geektom.service.B)"  order="30" />
</aop:config>

代理的方法是A中的method,可是目標類必須是B,若是沒有添加後面的target,那麼任何A的子類調用method()方法時都會被代理。方法

相關文章
相關標籤/搜索