美文网首页
JAVA代理与动态代理

JAVA代理与动态代理

作者: martingale | 来源:发表于2020-11-19 11:59 被阅读0次

代理模式简介

代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。

举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只是想买一辆车而已为什么我还要额外做这么多事呢?于是我就通过中介公司来买车,他们来给我找车源,帮我办理车辆过户流程,我只是负责选择自己喜欢的车,然后付钱就可以了。用图表示如下:

image

代理模式分类

静态代理

如类图所示,创建服务类接口,实现服务接口,创建代理类

动态代理

java动态代理的实现包括JDK动态代理机制(代理必须有相应的接口),cglib(不需要接口,可以对类进行代理)
在spring中区别如下:

JDK动态代理(Dynamic Proxy)

基于标准JDK的动态代理功能
只针对实现了接口的业务对象

CGLIB

通过动态地对目标对象进行子类化来实现AOP代理
需要指定@EnableAspectJAutoProxy(proxyTargetClass = true)来强制使用
当业务对象没有实现任何接口的时候默认会选择CGLIB

AspectJ
AspectJ是Eclipse旗下的一个项目。Spring AOP借鉴了很多AspectJ成熟的接口和注解等。
很多地方都是直接用到AspectJ里面的代码。典型的比如@Aspect,@Around,@Pointcut注解等等。而且从相关概念以及语法结构上而言,两者其实非常非常相似。比如Pointcut的表达式语法以及Advice的种类,都是一样的。

最大的区别在于两者实现AOP的底层原理不太一样:
Spring AOP: 基于代理(Proxying)
AspectJ: 基于字节码操作(Bytecode Manipulation)

参考:
1.设计模式---代理模式
2.AOP的两种实现-Spring AOP以及AspectJ

相关文章

  • java反射和动态代理

    java动态代理Proxy.newProxyInstance 详解java代理机制(静态代理、动态代理)以及使用场景

  • Java动态代理从入门到原理再到实战

    目录 前言 什么是动态代理,和静态代理有什么区别 Java动态代理的简单使用 Java动态代理的原理解读 动态代理...

  • Java 动态代理

    java的动态代理机制详解 JDK动态代理详解 Java核心技术点之动态代理

  • 保存java 动态代理生成的字节码文件

    保存java 动态代理生成的字节码文件 在Java中,常用的动态代理技术有JDK的动态代理和cglib动态代理,不...

  • java动态代理(JDK和cglib)(转载自http://ww

    java动态代理(JDK和cglib) JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是...

  • JDK动态代理详解

    JDK动态代理详解 java动态代理类 Java动态代理类位于java.lang.reflect包下,一般主要涉及...

  • 动态代理的两种方式

    静态代理就不说了,基本用到的都是动态代理。 Java中动态代理有JDK动态代理和CGLIB动态代理。 JDK代理的...

  • java基础巩固笔记(4)-代理

    标签: java Contents java基础巩固笔记(4)-代理概念动态代理创建动态类动态代理的工作原理面向切...

  • java 动态代理

    动态代理动态代理可以让我们在运行时动态生成代理类,解耦程度更高。Java 动态代理的实现主要借助于 java.la...

  • Java 动态代理

    前言 关于动态代理 JDK动态代理 CGLIB动态代理 区别 java动态代理是利用反射机制生成一个实现代理接口的...

网友评论

      本文标题:JAVA代理与动态代理

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