aop
1.定义自定义注解
@Target注解需要修改
module 和 operator 自定义的属性
//type代表可以放在类上,method代表可以放在方法上
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LogAnnotation {
String module() default "";
String operator() default "";
}
2.添加注解
--在需要添加aop的地方添加注解
当前是在方法上添加注解
3.创建aop类
@Component //讲该aop注册到ioc中
@Aspect //切面 定义了通知和切点的关系
@Slf4j
public class LogAspect {
//定义切点 当前以上一个定义的自定义注解为例
//添加了该注解的地方为切点
@Pointcut("@annotation(com.mszlu.blog.common.aop.LogAnnotation)")
public void pt(){}
//环绕通知
@Around("pt()") //指定哪个切点
public Object log(ProceedingJoinPoint joinPoint) throws Throwable {
doSth(); //方法前 切点前
//执行方法 执行切点
Object result = joinPoint.proceed();
doSth(); //方法后面 切点后
return result; //需要讲原始方法的返回值返回回去
}
}