先写一个目标类:
@Component
public class MyMath implements Caculator {
public int add(int i, int j) {
return i+j;
}
public int sub(int i, int j) {
return i-j;
}
public int mul(int i, int j) {
return i*j;
}
public int div(int i, int j) {
return i/j;
}
}
写一个切面类:
@Aspect
@Component
public class LogUtils {
@Pointcut("execution(public int com.hh.pojo.MyMath.*(int,int))")
public void MyPoint(){
@Around("MyPoint()x")
public Object myAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
Object[] args = proceedingJoinPoint.getArgs();
Object proceed = null;
try {
System.out.println("环绕前置通知");
//目标方法的调用
proceed = proceedingJoinPoint.proceed(args);
System.out.println("环绕返回通知");
} catch (Exception e) {
System.out.println("环绕异常通知");
}finally {
System.out.println("环绕后置通知");
}
return proceed;
}
}
写测试类:
public class MyTest {
ApplicationContext context =
new ClassPathXmlApplicationContext("spring.xml");
@Test
public void test(){
Caculator bean = bean = context.getBean(Caculator.class);;
bean.add(1,2);
}
}