【Spring】代理模式——动态代理
在Spring框架中,动态代理通常是通过ProxyFactory
类来实现的。以下是一个使用ProxyFactory
创建动态代理的例子:
import org.springframework.aop.framework.ProxyFactory;
public class DynamicProxyExample {
public static void main(String[] args) {
// 创建ProxyFactory并指定接口
ProxyFactory factory = new ProxyFactory();
factory.setInterfaces(MyInterface.class);
// 添加一个Advice(通知)
factory.addAdvice(new MyMethodInterceptor());
// 创建代理实例
MyInterface proxy = (MyInterface) factory.getProxy();
// 使用代理实例
proxy.doSomething();
}
}
interface MyInterface {
void doSomething();
}
class MyMethodInterceptor implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
// 在调用方法前可以添加自定义逻辑
System.out.println("Before method invocation: " + invocation.getMethod().getName());
// 调用原始方法
Object result = invocation.proceed();
// 在调用方法后可以添加自定义逻辑
System.out.println("After method invocation: " + invocation.getMethod().getName());
// 返回结果
return result;
}
}
在这个例子中,我们定义了一个接口MyInterface
和一个实现了MethodInterceptor
的拦截器MyMethodInterceptor
。通过ProxyFactory
,我们创建了一个实现了MyInterface
接口的代理实例,并且在调用接口方法doSomething()
前后添加了自定义的逻辑。
评论已关闭