首页 > 其他分享 >JDK 动态代理

JDK 动态代理

时间:2022-11-15 11:47:55浏览次数:43  
标签:UserDaoImpl args target JDK Object 代理 动态 invoke public

  • Factory class 文件

public class ProxyFactory {

	private Object target;

	public ProxyFactory(Object target) {
		super();
		this.target = target;
	}

	/**
	* 得到代理对象
	*/
  	public Object getProxyFactory() {
		 /**
		 * 参数说明
		 * ClassLoader 类加载器
		 * Interfaces 目标类实现的所有接口数组
		 * InvocationHandler 当代理对象被创建后, 调用目标对象的方法时触发的方法回调
		 */
		return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {
			/**
			 * 
			 * @param proxy 代理对象
			 * @param method 用户调用目标的方法
			 * @param args 用户调用目标的参数
			 */
			@Override
			public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
				// 前置增强
				Object invoke = method.invoke(target, args);
				// 后置增强
				return invoke;
			}
		});
	}
}

  • mian 文件

public static void main(String[] args) {

	UserDaoImpl daoImpl = new UserDaoImpl();

	ProxyFactory proxyFactory = new ProxyFactory(daoImpl);

	UserDaoImpl daoImplFactory = (UserDaoImpl)proxyFactory.getProxyFactory();

	daoImplFactory.play();
		
}

标签:UserDaoImpl,args,target,JDK,Object,代理,动态,invoke,public
From: https://www.cnblogs.com/IT-IOS-MAN/p/16891896.html

相关文章

  • cglib 动态代理
    Factoryclass文件publicclassProxyFactory{ privateObjecttarget; publicProxyFactory(Objecttarget){ super(); this.target=target; } /*......
  • 阿里云微服务引擎 MSE 9 月份产品动态
    ......
  • JDK字体导入
    可能安装多版本的JDK,需确认是哪个版本rpm-qa|grepjavamkdir-p/usr/share/fonts/japanese/TureType或者#cd/usr/share/fonts/#mkdirjapanese#cdjapanese/......
  • vue源码分析-基础的数据代理检测
    简单回顾一下这个系列的前两节,前两节花了大量的篇幅介绍了Vue的选项合并,选项合并是Vue实例初始化的开始,Vue为开发者提供了丰富的选项配置,而每个选项都严格规定了合并的策......
  • 配置tomcat和jdk环境变量
    1.下载tomcat.apache.orgoracle.com2.安装双击jdk解压tomcat3.配置home就是安装包的安装目录变量名:CATALINA_HOME变量值:d:\apache-tomcat-7.0.0(后面没有分号,这里的值是t......
  • vue+iviews 动态表格(table组件)
      iviews官网上关于table的使用方法是固定表头的使用方法,如何生成动态的table网上找了好多也没有特别合适的,综合几位博主的文章经过尝试终于实现了,分享出来供大家参考......
  • 动态代理简单代码
     /***业务接口*/publicinterfaceSubject{voidcall();} /***业务接口的实现(被代理的类)*/publicclassRealSubjcetimplementsSubject{......
  • vue + el-menu 动态加载 一二级菜单 侧边栏
    1.HTML<template><divclass="container"><divclass="top">上</div><divclass="main"><!--动态加载侧边栏首先分为可折叠的......
  • 【链接库】静态库与动态库区别?
    在C语言中,函数库分为两种类型,一种是静态库(库程序是直接注入目标程序,不分彼此,库文件通常以.a结尾),另一种为动态库(库程序是在运行目标程序时加载,库文件通常以.so结尾)。文......
  • Asterisk realtime 之SIP用户动态写入mysql 数据库(2)
    提供通信服务器和客户端解决方案,包括视频电话,调度系统,会议系统等VOIP行业资讯和技术趋势请参考:www.voip123.cn接上一篇文章,SIP用户写入mysql数据库,asterisk自动查找数......