Spring-AOP 的四种增强方式(前置增强、后置增强、异常增强、环绕增强)
1.前置增强,在核心功能之前执行的额外功能
public class MyBeforeAdvice implements MethodBeforeAdvice{
@Override
public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {
System.out.println("这是前置增强!");
String method = arg0.getName();
System.out.println("the method:"+method);
for(int i=0;i<arg1.length;i++) {
System.out.println("the arg1:"+arg1[i]);
}
System.out.println("the arg2:"+arg2.getClass());
System.out.println("the is MyBeforeAdvice");
}
}
2.后置增强,在核心功能之后执行的额外功能
public class MyAfterAdvice implements AfterReturningAdvice{
@Override
public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {
System.out.println("这是后置方法!");
System.out.println("the arg0:"+arg0.getClass());
System.out.println("the arg1:"+arg1.getName());
for(int i=0;i<arg2.length;i++) {
System.out.println("the arg2:"+arg2[i]);
}
System.out.println("the arg3:"+arg3.getClass());
System.out.println("the is MyAfterAdvice");
}
}
3.异常增强,在核心功能发生异常时执行的额外功能
public class MyThrowsAdvice implements ThrowsAdvicef{
public void afterThrowing(Method method,Object[] args,Object target,Exception ex) {
System. out. println(target+"里面的" +method.getName()+"产生了"+ex.getMessage());
}
}
4.环绕增强,在核心功能之前以及之后执行的额外功能
public class MyInterceptor implements MethodInterceptor{
@Override
public Object invoke(MethodInvocation arg0) throws Throwable {
System.out.println("this is my interceptor adivce");
System.out.println("arg0.getThis()"+arg0.getThis().getClass().toString());
System.out.println("arg0.getMethod()"+arg0.getMethod().getName());
Object[] arguments = arg0.getArguments();
for (int i = 0; i < arguments.length; i++) {
System.out.println("arg0.getArguments():"+arguments[i]);
}
Object object = arg0.proceed();
return object;
}
}