aop切面实现demo
时间: 2023-07-01 17:07:38 浏览: 100
好的,下面是一个简单的 AOP 切面实现 Demo:
首先,定义一个注解 `@Log`,用于标注需要记录日志的方法:
```
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Log {
}
```
然后,编写一个切面类 `LogAspect`,实现在方法执行前后记录日志的功能:
```
@Aspect
@Component
public class LogAspect {
@Around("@annotation(com.example.demo.annotation.Log)")
public Object log(ProceedingJoinPoint joinPoint) throws Throwable {
String methodName = joinPoint.getSignature().getName();
Object[] args = joinPoint.getArgs();
System.out.println("Method " + methodName + " start with args " + Arrays.toString(args));
Object result = joinPoint.proceed();
System.out.println("Method " + methodName + " end with result " + result);
return result;
}
}
```
最后,在需要记录日志的方法上添加 `@Log` 注解即可:
```
@Service
public class DemoService {
@Log
public void doSomething(String arg1, int arg2) {
// ...
}
}
```
这样,在调用 `doSomething` 方法时,就会自动记录方法的输入参数和输出结果。
阅读全文