- 首先创建一个springboot项目,引入必要的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>
- 创建一个日志注解
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {
String value() default "";
}
- 创建一个切面
@Component
@Aspect
public class LogAspect {
@Autowired
private HttpServletRequest request;
@Autowired
private LogMapper logMapper;
@Pointcut("@annotation(top.kooper.demo.log.annotation.Log)")
public void pointcut() {}
@Around("pointcut()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
//执行方法
Object proceed = joinPoint.proceed();
Object[] args = joinPoint.getArgs();
for (Object object :
args) {
System.out.println("参数:"+object.toString());
}
MethodSignature methodSignature = (MethodSignature)joinPoint.getSignature();
Method method = methodSignature.getMethod();
System.out.println("方法名:"+method.getName());
Signature signature = joinPoint.getSignature();
String declaringTypeName = signature.getDeclaringTypeName();
System.out.println("declaringTypeName:"+declaringTypeName);
String name = signature.getName();
System.out.println("name:"+name);
//todo 写记录日志内容的业务代码
return proceed;
}
}
至此结束