把切面理解为方面
package com.hhh.aop;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.aop.AfterReturningAdvice;
import org.springframework.aop.MethodBeforeAdvice;
import org.springframework.aop.ThrowsAdvice;
import java.lang.reflect.Method;
public class MyAspect implements MethodBeforeAdvice , AfterReturningAdvice , MethodInterceptor , ThrowsAdvice {
@Override
public void before(Method method, Object[] objects, Object o) throws Throwable {
System.out.println("Before..."+method.getName());
}
@Override
public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {
System.out.println("After..."+method.getName());
}
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
System.out.println("Around...Before"+methodInvocation.getMethod().getName());
Object obj = methodInvocation.proceed(); //执行目标方法
System.out.println("Around...After"+methodInvocation.getMethod().getName());
return obj;
}
}
切面是对业务层做增强的
创建目标对象:创建业务层的接口及实现类 修改Spring配置文件:测试:
修改业务层:
创建切面:
测试:



