q1:@Aspect注解 不提示导入?
mvn依赖作用域修改 删掉
这是我最快一次完成Aop切面日志记录
记录下流程:
1.导入必须依赖:
<!--这个依赖是 AspectJ 的编织器(weaver),它是一个面向切面编程(AOP)的工具,
用于在运行时对 Java 代码进行横切(cross-cutting)操作和增强。 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.20.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjrt -->
<!--AspectJ 运行时是一个小型库,用于在先前的编译时或编译后(二进制编织)构建步骤中运行由
AspectJ 方面增强的 Java 程序。-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.20.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<!-- Spring Context 提供对注册表(上下文)等已配置对象的访问。它继承了 Spring Beans 的功能,
并添加了对国际化、事件传播、资源加载和上下文的透明创建的支持。-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
<!--Spring AOP 提供了符合联盟标准的面向方面的编程实现,允许您定义方法拦截器和切入点,以干净地解耦实现应分离的功能的代码。-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>6.0.12</version>
</dependency>
2.定义注解:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface BaseLog {
}
3.注解实现:
@Slf4j
@Aspect
@Order(0)
@Component
public class BaseLogAop {
@Pointcut("@annotation(com.xbh.stu.annotation.BaseLog)")
public void annotationMethod() {
}
@Around("annotationMethod()")
public Object getBaseLog(ProceedingJoinPoint joinPoint) throws Throwable {
String className = joinPoint.getTarget().getClass().getSimpleName();
String methodName = joinPoint.getSignature().getName();
log.info(className+"."+methodName);
return joinPoint.proceed();
}
}