代码:
我们是需要一个日志的切面类的。
分类:
前置通知 @Before
后置通知 @After
返回通知 @AfterReturning
异常通知 @AfterThrowing
环绕通知@Around
代码:
第一步:
package com.atguigu;
public class MathCalculator {
public int div(int i,int j){
return i/j;
}
}
第二步:
package com.atguigu;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
@Aspect
public class LogAspects {
// @Pointcut("execution(public int com.atguigu.MathCalculator.div(int,int))")
@Pointcut("execution(public int com.atguigu.MathCalculator.*(..))")
public void pointCut() {
}
@Before("pointCut()")
public void logStarrt(JoinPoint joinPoint) {
System.out.println("开始运行。。。。。。。。。"+joinPoint.getSignature().getName());
}
@After("pointCut()")
public void logEnd() {
System.out.println("结束。。。。。。。。。。");
}
@AfterReturning(value = "pointCut()",returning = "object")
public void logReturn(Object object) {
System.out.println("有返回值。。。。。。。。。。"+object);
}
@AfterThrowing(value="pointCut()",throwing="exception")
public void logException(Exception exception) {
System.out.println("除法异常。。。。。。。。。。");
}
}
第三步:加入到容器
public class AppConfig {
@Bean
public MathCalculator calculator(){
return new MathCalculator();
}
@Bean
public LogAspects logAspects(){
return new LogAspects();
}
}
第四步:告诉spring当前的类是一个切面
@Aspect
public class LogAspects {}
第五步:
----------------------------------------------------27-----------------------------------------------------
原理:
第一步:点进去
第二步:点进去
第三步:点进去
原理:
----------------------------------------------------28------------------------------------------------------
略。。。。。。
----------------------------------------------------29------------------------------------------------------