aop this 与target 使用区别 使用Java代码 详细表达出来 aop this 与target 逻辑区别 使用Java代码 详细表达出来
时间: 2024-02-29 19:52:24 浏览: 73
java使用动态代理来实现AOP(日志记录)的实例代码共6
在AOP编程中,this和target是两个关键字,它们的使用区别如下:
1. this关键字
this指的是代理对象本身。当我们在一个方法中调用另一个方法时,如果这两个方法都在同一个代理对象中,那么this关键字就非常有用,因为它可以让我们调用同一个代理对象中的其他方法,并且可以应用于任何连接点。
示例代码:
```java
@Aspect
public class LoggingAspect {
@Before("execution(* com.example.demo.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Before calling the method " + joinPoint.getSignature().getName());
System.out.println("The proxy object is " + joinPoint.getThis().getClass());
}
}
```
在上面的代码中,我们可以看到使用了joinPoint.getThis()来获取代理对象,然后输出代理对象的类型。
2. target关键字
target指的是目标对象。当我们在一个方法中调用另一个方法时,如果这两个方法不在同一个代理对象中,那么target关键字就非常有用,因为它可以让我们调用目标对象中的方法,并且只能应用于连接到目标对象的连接点上。
示例代码:
```java
@Aspect
public class LoggingAspect {
@Before("execution(* com.example.demo.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Before calling the method " + joinPoint.getSignature().getName());
System.out.println("The target object is " + joinPoint.getTarget().getClass());
}
}
```
在上面的代码中,我们可以看到使用了joinPoint.getTarget()来获取目标对象,然后输出目标对象的类型。
阅读全文