美文网首页
3.1动态代理-第3章aop面向切面编程

3.1动态代理-第3章aop面向切面编程

作者: 努力学习的lfk | 来源:发表于2021-08-20 08:55 被阅读0次

3.1动态代理

1.能够实现在原有代码不改动的情况下,通过动态代理能够给原来的类增加一些额外功能。
2.减少重复代码。
3.专注业务逻辑代码。
4.解耦合,让业务功能和非业务功能(日志、事务等)分离。

动态代理:程序在整个运行过程中根本就不存在目标类的代理类,目标对象的代理对象只是由代理生成工具在程序运行时由JVM根据反射等机制动态生成的。代理对象与目标对象的代理关系在程序运行时才确立。

3.1.1 JDK动态代理

使用jdk的Proxy实现代理,要求目标类与代理类实现相同的接口。若目标类不存在接口,则无法通过该方法实现。
从jdk1.3以来,Java语言通过java.lang.reflect包提供三个类支持代理模式Proxy、Method、InvocationHandler

Method:执行目标类的方法,通过Method类实现

实现步骤:
1)创建目标类,SomeServiceImpl目标类,给它的doSome、doOther增加时间、事务。

2)创建InvocationHandler接口的实现类,在这个类实现给目标方法增加的功能。

创建变量保存目标对象.png
执行目标对象
method.invoke(目标对象,args);
通过Method类实现,执行目标类的方法.png 记录执行方法的返回值.png 创建工具类.png 新增功能.png

3)使用jdk中类Proxy,创建代理对象。实现创建对象的能力。

在InvocationHandler接口的实现类,保存目标对象 创建目标对象 创建IncationHandler对象.png
使用Proxy创建代理,语法:
     Proxy.newProxyInstance(目标对象.getClass().getClassLoader(),目标对象.getClass().getInterfaces(),InvocationHandler对象);  
创建Proxy对象.png Proxy对象强制类型转换.png 通过代理执行方法.png

若只想让某个方法增加功能,可在InvocationHandler接口的实现类中,进行判断

指定某个方法实现动态代理.png equals与==的区别.png

3.1.2 CGLIB动态代理

第三方的工具库,创建代理对象,原理是继承。通过继承生成目标类的子类,在子类中通过重写父类的方法,来实现功能的增强(类能继承就行,不需要接口)

要求目标类不能是final类型的,因为final类型的类不能被继承、final类型的方法不能被子类重写


笔记来源:B站动力节点 spring学习视频

视频链接:https://www.bilibili.com/video/BV1nz4y1d7uy

相关文章

  • 第三章:Spring AOP

    什么是AOP AOP——面向切面编程。是面向对象编程(OOP)的补充。 AOP术语 JDK动态代理 动态代理对象必...

  • Spring学习系列--3.AOP

    Spring Aop Aop面向切面编程 Aop入门动态代理 动态代理,其实与Aop的原理有些相似,可以用动态代理...

  • spring框架02

    1 AOP面向切面编程 1.1 什么是AOP AOP意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能...

  • 3.3AOP简介-第3章aop面向切面编程

    AOP:面向切面编程,底层采用动态代理实现的,采用了两种代理:jdk的动态代理与CGLIB的动态代理。AOP是动态...

  • AOP

    AOP 面向切面编程 Aspect-Oriented-Programming 优点 动态代理,不用修改原有的代码 Ex

  • Spring AOP

    概览 AOP(Aspect Oriented Programming)面向切面编程。通过预编译方式和运行期动态代理...

  • 4. AOP

    AOP (Aspect Oriented Programming),面向切面编程,通过预编译方式与运行期动态代理实...

  • Maven项目&Spring AOP基础(二)

    AOP(Aspect Oriented Programming):面向切面编程,通过预编译方式和运行期动态代理实现...

  • ABP之AOP初显威

    技术和框架要点 ABPAOPIOCCastle AOP AOP,面向切面编程,通过运行期动态代理实现程序功能的统一...

  • AOP总结

    AOP面向切面编程 面向切面编程是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP延...

网友评论

      本文标题:3.1动态代理-第3章aop面向切面编程

      本文链接:https://www.haomeiwen.com/subject/ozgrpltx.html