1、前置通知遞參數java
1.修改前置通知接收參數選項express
public void beforeInvoke(Object arg){ Logger.getLogger(ServiceProxy.class).info("[ServiceProxy - Before] 參數值 "+arg); }
2.修改applicationContext 調用表達式和前置通知參數接收app
<!-- 針對AOP的處理進行配置 --> <aop:config> <!-- 定義業務操做切入點 --> <aop:pointcut expression="execution(* group.esperanto.service..*.*(..)) and args(id)" id="messagePoint"/> <!-- 定義具體操做到切入點的方法上 --> <aop:aspect ref="serviceProxy"> <aop:before method="beforeInvoke" pointcut-ref="messagePoint" arg-names="id"/> <aop:after method="afterInvoke" pointcut="execution(* group.esperanto.service..*.*(..))"/> </aop:aspect> </aop:config>
2、返回通知code
1.添加返回通知處理方法xml
public void returnInvoke(Object val){ Logger.getLogger(ServiceProxy.class).info("[ServiceProxy - Returning] 返回值 "+val); }
2.修改applicationContext 添加返回通知get
<!-- 針對AOP的處理進行配置 --> <aop:config> <!-- 定義業務操做切入點 --> <aop:pointcut expression="execution(* group.esperanto.service..*.*(..)) and args(id)" id="messagePoint"/> <!-- 定義具體操做到切入點的方法上 --> <aop:aspect ref="serviceProxy"> <aop:before method="beforeInvoke" pointcut-ref="messagePoint" arg-names="id"/> <aop:after method="afterInvoke" pointcut="execution(* group.esperanto.service..*.*(..))"/> <aop:after-returning method="returnInvoke" pointcut="execution(* group.esperanto.service..*.*(..))" returning="val" arg-names="val" /> </aop:aspect> </aop:config>
3、環繞通知io
1.添加環繞通知執行方法class
public Object arroundInvoke(ProceedingJoinPoint point) throws Throwable{ Logger.getLogger(ServiceProxy.class).info("[ServiceProxy -arroundInvoke Before] 參數 值 "+ Arrays.toString(point.getArgs())); // Object obj = point.proceed(point.getArgs()); // 正常繼續傳遞參數 Object obj = point.proceed(new Object[]{"hello"}); //如今不傳遞參數,自定義參數傳遞 Logger.getLogger(ServiceProxy.class).info("[ServiceProxy -arroundInvoke After] 返回結果"+obj); return true; }
2.修改applicationContext配置
<!-- 針對AOP的處理進行配置 --> <aop:config> <!-- 定義業務操做切入點 --> <aop:pointcut expression="execution(* group.esperanto.service..*.*(..))" id="messagePoint"/> <!-- 定義具體操做到切入點的方法上 --> <aop:aspect ref="serviceProxy"> <aop:around method="arroundInvoke" pointcut-ref="messagePoint"/> </aop:aspect> </aop:config>