在Spring Boot中,你可以通过自定义注解和AOP实现横切关注点的功能,例如日志记录、权限校验等。以下是一个简单的例子,展示了如何创建自定义注解和相应的AOP切面来记录方法的执行。
- 创建自定义注解:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogExecutionTime {
}
- 创建一个AOP切面来处理注解:
@Aspect
@Component
public class LogExecutionTimeAspect {
@Around("@annotation(LogExecutionTime)")
public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
Object proceed = joinPoint.proceed();
long executionTime = System.currentTimeMillis() - start;
System.out.println(joinPoint.getSignature() + " executed in " + executionTime + "ms");
return proceed;
}
}
- 在你的服务类中使用注解:
@Service
public class MyService {
@LogExecutionTime
public void someMethod() {
// Your method logic here
}
}
确保你的Spring Boot应用程序启用了AOP:
<!-- 在pom.xml中添加Spring AOP依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
当你调用someMethod()
方法时,AOP切面会检测到LogExecutionTime
注解,并记录该方法的执行时间。