代理对象与目标对象一样,使用Java代码表示出来
时间: 2024-02-29 16:52:25 浏览: 108
代理对象和目标对象是AOP编程中的两个重要概念,它们的区别如下:
1. 目标对象
目标对象是指我们要增强的原始对象,也就是我们的业务逻辑所在的对象。它是我们在AOP编程中真正需要操作的对象,我们通过代理对象调用目标对象的方法来实现AOP编程。
示例代码:
```java
public interface UserService {
void addUser(String username, String password);
}
public class UserServiceImpl implements UserService {
@Override
public void addUser(String username, String password) {
System.out.println("Add user " + username + " with password " + password);
}
}
```
在上面的代码中,UserServiceImpl就是我们的目标对象,它实现了UserService接口。
2. 代理对象
代理对象是指我们生成的用于增强目标对象的对象,它与目标对象具有相同的方法签名,我们通过代理对象来调用目标对象的方法,并在方法执行前后添加一些额外的逻辑。
示例代码:
```java
@Aspect
public class LoggingAspect {
@Around("execution(* com.example.demo.service.UserService.addUser(..))")
public void logAround(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("Before calling the method " + joinPoint.getSignature().getName());
Object result = joinPoint.proceed();
System.out.println("After calling the method " + joinPoint.getSignature().getName());
}
}
```
在上面的代码中,我们可以看到通过@Around注解来定义了一个环绕通知,然后在通知中通过joinPoint.proceed()来调用目标对象的方法,这里的joinPoint就是代理对象。
阅读全文