动态代理

代理:

本来应该自己做的事情,却请了别人来做,被请的人就是代理对象。

举例:春季回家买票让人代买

动态代理:

在程序运行过程中产生的这个对象

而程序运行过程中产生对象其实就是我们刚才反射讲解的内容,所以,动态代理其实就是通过反射来生成一个代理

在Java中java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口就可以生成动态代理对象。JDK提供的代理只能针对接口做代理。我们有更强大的代理cglib

Proxy类中的方法创建动态代理类对象

public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)

最终会调用InvocationHandler的方法

InvocationHandler

Object invoke(Object proxy,Method method,Object[] args)

package cn.learn_06;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;public class MyInvocationHandler implements InvocationHandler {private Object target; // 目标对象public MyInvocationHandler(Object target) {this.target = target;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {System.out.println("权限校验");Object result = method.invoke(target, args);System.out.println("日志记录");return result; // 返回的是代理对象}
}
package cn.learn_06;import java.lang.reflect.Proxy;public class Test {public static void main(String[] args) {UserDao ud = new UserDaoImpl();ud.add();ud.delete();ud.update();ud.find();System.out.println("-----------");// 我们要创建一个动态代理对象// Proxy类中有一个方法可以创建动态代理对象// public static Object newProxyInstance(ClassLoader loader,Class<?>[]// interfaces,InvocationHandler h)// 我准备对ud对象做一个代理对象MyInvocationHandler handler = new MyInvocationHandler(ud);UserDao proxy = (UserDao) Proxy.newProxyInstance(ud.getClass().getClassLoader(), ud.getClass().getInterfaces(), handler);proxy.add();proxy.delete();proxy.update();proxy.find();System.out.println("-----------");StudentDao sd = new StudentDaoImpl();MyInvocationHandler handler2 = new MyInvocationHandler(sd);StudentDao proxy2 = (StudentDao) Proxy.newProxyInstance(sd.getClass().getClassLoader(), sd.getClass().getInterfaces(), handler2);proxy2.login();proxy2.regist();}
}

动态代理的概述和实现相关推荐

  1. 反射+动态代理+枚举

    一.反射 1.类的加载的概述 A:类的加载概述当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化.加载 就是指将.class文件读入内存,并为 ...

  2. 自建连接池,通过动态代理增强getConnection()方法,使其调用用close()方法时具有返回连接的功能

    文章目录 一.JDBC 1.概述与原理 2.API介绍 二.连接池 三.动态代理 1.概述与原理 2.API介绍 四.动态代理增强getConnection()方法 1.原因 2.代码思路与实现 3. ...

  3. 【Java 19】反射 - 反射机制概述、获取Class实例、类的加载与ClassLoader的理解、创建运行时类的对象、获取运行时类的完整结构、调用运行时类的指定结构、动态代理

    反射机制概述.获取Class实例.类的加载与ClassLoader的理解.创建运行时类的对象.获取运行时类的完整结构.调用运行时类的指定结构.动态代理 反射 1 Java反射机制概述 1.1 Java ...

  4. 通过反射创建动态代理对象(二)

    2019独角兽企业重金招聘Python工程师标准>>> 一.概述 将"通过反射创建动态代理对象(一)"合二为一 二.代码说明 package staticimpo ...

  5. Java基础:动态代理

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 概述 在运行时,动态创建一组指定的接口的实现类对象(代理对象)! 代理是实现AOP(面向切面编程)的核 ...

  6. 代理模式——静态代理,动态代理(JDK代理和CGLib代理)

    概述 由于某些原因需要给某对象提供一个代理以控制对该对象的访问. 这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介. Java中的代理按照代理类生成时机不同又分为 ...

  7. 动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事

    AOP 概述 什么是 AOP       AOP:全称是 Aspect Oriented Programming 即:面向切面编程 AOP 的作用及优势 作用: 在程序运行期间,不修改源码对已有方法进 ...

  8. Java-CGLib动态代理

    文章目录 导读 问题 CGLib动态代理和JDK动态代理的区别 CGLib概述 改造 导读 Spring-AOP基础知识 Java-JDK动态代理 Java-CGLib动态代理 问题 另一篇博文中的问 ...

  9. Java-JDK动态代理

    文章目录 导读 问题 概述 改造 其他相关接口/类 导读 Spring-AOP基础知识 Java-JDK动态代理 Java-CGLib动态代理 问题 另一篇博文中的问题 性能监视横切逻辑代码 概述 J ...

最新文章

  1. Linux下 WiFi rtl 移植,IMX6Q Linux WIFI+BT(RTL8723au)模块移植问题
  2. 诺奖得主涉嫌学术不端!30余篇论文被指涉嫌P图造假、复制粘贴,合作者包括中国学者...
  3. JVM盘点家底查看初始默认值
  4. List有关知识与ArrayList的实现
  5. 【查看hadoop镜像】
  6. 容器源码分析之HashTable(八)
  7. Linux指令:tar打包与压缩
  8. 春运期间长江海事局开辟四类运输“绿色通道”
  9. ubuntu系统使用命令行播放MP3歌曲
  10. openfire-好友管理实现好友添加及分组管理
  11. VC2008 快捷键
  12. gz是什么意思饭圈_饭圈黑话出圈,吃瓜还需揭秘文字?
  13. Python Selenium的下载和安装
  14. 48-Elasticsearch-2(DSL查询_搜索结果处理_RestClient查询文档)
  15. ajax向后台传递参数为对象实例
  16. 电商直播方案主要有哪些内容?
  17. 激励人生10张英文励志海报
  18. 小程序身份证号码保留前后4位其他用“*”代替
  19. 华为OD机试2022.11.04 只记得两题
  20. Windows电脑开机蓝屏(1)

热门文章

  1. Eclipse+pydev+手动安装
  2. 开闭原则------(转)
  3. .cpp 编译成.a或是 .so
  4. HDU 4634 Swipe Bo(搜索)
  5. 新个税法通过,起征点每月5000元,一图看清你能省多少钱
  6. JAVA学习笔记--类型转换(父类子类 Object 基本类型 String) 拆装箱 包装类
  7. PostgreSQL数据类型-枚举类型、几何类型、网络地址类型和其他数据类型
  8. Notepad++ 设置执行 lua 和 python
  9. 第9条:覆盖equals时总要覆盖hashCode
  10. 图论相关算法理解和总结