Spring之環繞通知
阿新 • • 發佈:2020-11-16
一、建立實現介面類:LogAround.java
package org.ruangong.aop; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; public class LogAround implements MethodInterceptor{ @Override public Object invoke(MethodInvocation invocation) throws Throwable { // TODO Auto-generated method stub Object result = null; try{ System.out.println("用環繞通知實現的前置通知"); //invocation.proceed()之前的程式碼:前置通知 result = invocation.proceed(); //invocation.proceed()之後的程式碼;後置通知 System.out.println("用環繞通知實現的後置通知"); }catch(Exception e){ System.out.println("用環繞通知實現的異常通知"); } return result; } }
在try{}中,invocation.proceed()之前的程式碼是前置通知,invacation.proceed()之後的程式碼是後置通知。
catch中的程式碼是異常通知:
將業務類和通知類寫入ioc容器:
<!-- 環繞通知 --> <bean id="logAround" class="org.ruangong.aop.LogAround"></bean> <aop:config> <aop:pointcut expression="execution(public void org.ruangong.service.StudentServiceImpl.addStudent(org.ruangong.entity.Student))" id="pointcut"/> <aop:advisor advice-ref="logAround" pointcut-ref="pointcut"/> </aop:config>
測試類中進行測試:
異常通知測試: