介绍
动态代理主要作用为,在原有方法的功能上,通过不修改目标对象的代码情况下,对原有方法的功能进行横向扩展。
原生扩展调用
原生方法的调用需要对代码进行修改,从而达到拦截的作用,修改复杂且耦合性较高
/**
* 正常调用纵向扩展
*/
public abstract class AbstractNativeService {
public abstract void info();
public abstract void info2();
public void aspectInfo(){
System.out.println("before info");
this.info();
System.out.println("after info");
}
public void aspectInfo2(){
System.out.println("before info2");
this.info2();
System.out.println("after info2");
}
}
public class NativeService extends AbstractNativeService {
@Override
public void info() {
System.out.println("info 1");
}
@Override
public void info2() {
System.out.println("Info 2");
}
}
以下会通用该接口
public interface FuncService {
public void info();
public void info2();
}
下面的代理工厂只生

本文介绍了面向切面编程(AOP)中的静态代理和动态代理技术。静态代理虽然能实现方法扩展,但需针对每个方法进行修改。JDK动态代理通过Proxy.newProxyInstance创建代理对象,降低耦合,但要求目标对象实现接口。CGLIB动态代理则解决了此限制,适用于未实现接口的目标对象,通过MethodInterceptor进行方法拦截。
最低0.47元/天 解锁文章
670

被折叠的 条评论
为什么被折叠?



