静态代理和动态代理

来源:互联网 发布:ajax请求json数据 编辑:程序博客网 时间:2024/06/03 14:12

1.定义一个代理接口和实现类



2.定义一个静态代理类


3.测试类


静态代理类优缺点 
优点:业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。 
缺点: 
1)代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。 
2)如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。 



2.动态代理

(1)JDK动态代理

动态代理 AOP底层实现:有接口自动应用的就是JDK动态代理
     1)JDK  在运行时注入
          本质:在内存中构建出接口的实现类
          特点:被代理对象,必须有接口


(2)cglib动态代理

Cglib  底层,注入,编译期已经注入了
           本质:在内存中生成被代理类(目标类)的【子类】
           特点:可以在没有接口的情况下代理
           对于不使用接口的业务类,无法使用JDK动态代理,cglib采用非常底层的字节码技术,可以为一个类创建子类


原创粉丝点击