给我一个Java切面编程案例
时间: 2023-02-11 17:47:05 浏览: 84
在这个示例中,我们将创建一个切面来记录每个方法的执行时间。我们将使用 Spring AOP 来实现这个切面。
首先,我们需要在项目中添加对Spring AOP的支持。在pom.xml中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
```
然后我们创建一个切面类,在这里叫做"ExecutionTimeAspect"
```java
@Aspect
@Component
public class ExecutionTimeAspect {
@Around("execution(* com.example.demo.*.*(..))")
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;
}
}
```
这里我们使用 @Aspect 和 @Component 注解来标识这是一个切面类。@Around 注解表示我们想在方法执行之前和之后执行一些操作。表达式 "execution(* com.example.demo.*.*(..))" 表示我们希望拦截所有在com.example.demo包中的所有类的所有方法。
最后,我们可以在任意类中的方法上使用 @Autowired 注入 ExecutionTimeAspect,来触发这个切面的执行。
这只是一个简单的例子,在实际应用中,你可以根据需要进行更多的配置和定制。