1.先看一個例子java
<aop:config> <aop:pointcut id="deleteOpus" expression="execution(* net.qdedu.activity.service.OpusBizService.delOpus(..))"/> <aop:aspect ref="activityParticipationAop"> <aop:after-returning method="deleteParticipationInfo" pointcut-ref="deleteOpus" returning="result"/> </aop:aspect> </aop:config>
aop:pointcut 指的是切入點 切入點的id是 deleteOpusweb
expression 指的是掃描對應的service類中的方法(delOpus),*表明的任意類型spring
aop:aspect ref 指的是對應方法類(activityParticipationAop)express
aop:after-returning method 指的是你本身在(activityParticipationAop)裏面建立的對應方法(deleteParticipationInfo)spa
ref 指的是 和切入點id 保持一致 id對應的是切點,ref就至關因而切面,他兩個一相關聯就能夠執行那個service下面的方法了代理
2.對應的類code
@Component public class ActivityParticipationAop { }
3.對應的方法xml
public void deleteParticipationInfo(JoinPoint jp){
//獲取做品的id
IdParam idParam =(IdParam)jp.getArgs()[0];
}
JoinPoint是和aop一塊兒使用的類,它裏面有4個參數 對象
Signature getSignature(); 獲取封裝了署名信息的對象,在該對象中能夠獲取到目標方法名,所屬類的Class等信息 Object[] getArgs(); 獲取傳入目標方法的參數對象 Object getTarget(); 獲取被代理的對象 Object getThis(); 獲取代理對象
4.增長切入點beanblog
<bean id="paramValidate" class="com.we.core.web.aop.ParamValidate"></bean> <aop:config> <aop:pointcut id="businessMethod" expression="execution(* *..*.service..*.*(..))"/> <aop:aspect ref="paramValidate"> <aop:before method="process" pointcut-ref="businessMethod"/> </aop:aspect> </aop:config>
5.springcontext.xml
<!-- 打開aop 註解 --> <aop:aspectj-autoproxy /> <!-- 掃描aop.xml --> <import resource="aop.xml" />