项目环境:
JDK1.8
SpringBoot2.3.3.RELEASE
SpringAop2.3.3.RELEASE
第一步:引入jar包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>
第二步:编写自定义注解
package com.example.aop.sys;
import java.lang.annotation.*;
@Target(ElementType.METHOD) //注解放置的目标位置,METHOD是可注解在方法级别上
@Retention(RetentionPolicy.RUNTIME) //注解在哪个阶段执行
@Documented
public @interface SysLog {
String operateModel() default "";
SysLogEnum operateType() default SysLogEnum.OTHER;
String operateDescribe() default "";
}
package com.example.aop.sys;
public enum SysLogEnum {
/**
* 增
*/
INSERT,
/**
* 删
*/
DELETE,
/**
* 改
*/
UPDATE,
/**
* 查
*/
SELECT,
/**
* 其他
*/
OTHER
}
第三步:实现日志AOP类
package com.example.aop.sys;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;