`

动态代理入门

阅读更多
package com.dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.sql.Array;
import java.util.ArrayList;
import java.util.List;

public class TestHandler implements InvocationHandler {
	private Object proxiedObj;
	public TestHandler(Object obj){
		proxiedObj = obj;
	}
	
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		System.out.println("1"); 
		Object obj = method.invoke(proxiedObj, args);
		System.out.println("2");
		return obj;
	}

	public static void main(String args[]){
		Hello hello = new Hello();
		Class helloClass = hello.getClass();
		IHello hello2 =(IHello)Proxy.newProxyInstance(helloClass.getClassLoader(),helloClass.getInterfaces(),new TestHandler(hello));
		hello2.sayHello();//在代理对象上调用方法时这些方法的调用会转变成对调用处理器的invoke方法的调用
	}
}
interface IHello{
	void sayHello();
}
class Hello implements IHello{
	public void sayHello(){
		System.out.println("hello world!");
	}
}

 

public static Object newProxyInstance(ClassLoader loader,
                                      Class<?>[] interfaces,
                                      InvocationHandler h)
                               throws IllegalArgumentException
     参数:
loader - 定义代理类的类加载器
interfaces - 代理类要实现的接口列表
h - 指派方法调用的调用处理程序
分享到:
评论

相关推荐

    Java静态代理与动态代理demo

    这里提供了静态代理和动态代理的入门写法~一看即懂!

    java 动态代理实现AOP

    讲述JAVA的动态代理的原理,以及通过JAVA的动态代理来实现AOP。简洁,易懂,学习AOP的入门级文档

    什么是动态代理,动态代理笔记

    内容概要:动态代理学习笔记,适合刚接触maven的人能让你快速入门。 适用人群:大学生或者初接触动态代理的人 使用场景及目标:mybatis框架的前驱知识

    反射和动态代理(reflect and proxy)---含源码

    深入地探讨反射和动态代理技术,其中例子详细明白。使初学者比较容易入门!

    spring framework入门(6):java中的动态代理(jdk和cglib)

    spring framework入门(6):java中的动态代理(jdk和cglib) 博客地址:https://blog.csdn.net/u010476739/article/details/76737460

    静态代理与动态代理小Demo

    一个静态代理和动态代理的小例子,开发时使用的工具是myeclipse,直接使用myeclipse工具导入即可,希望能 给大家理解这方面的入门知识带来些作用,同时也希望大家指出不足,我可以更加进行改进

    Nginx知识体系入门实践.zip

    01.Nginx快速入门 02.Nginx常用模块 03.Nginx提供静态资源WEB服务 04.Nginx提供代理服务 05.Nginx提供负载均衡 06.Nginx提供ProxyCache缓存服务 07.Nginx Rewrite跳转规则与实践 08.Nginx构建Https加密传输网站(基于...

    SpringAOP入门和原理

    SpringAOP入门和原理分析,动态代理

    Spring从入门到精通全套教程.zip

    本套课程是Spring入门到精通教程,课程包括Spring IoC、Spring AOP(CGLib、JDK动态代理)、Spring整合MyBatis,Spring事务管理等内容。 通过本套课程的学习,你将掌握: 1、 IoC和依赖注入 2、 AOP的原理和实际...

    Java基础入门教程

    java基础入门,GitBook本地命令行生成,等线字体版目录:java开发入门,java编程基础,面向对象,常见对象,多线程,集合框架,网络编程,IO流,反射机制,动态代理,注解,java新特性,内存管理。

    MyBatis入门以及提高

    ② :mybaits的mapper(代理)接口(相当于dao接口)代理开发方法(掌握)第二种要掌握 mybatis配置文件SqlMapConfig.xml*** mybatis核心: mybatis输入映射(掌握) mybatis输出映射(掌握) mybatis的动态...

    LINQ入门及应用 11/13

     3.3.3 动态谓词的筛选  3.4 select子句  3.4.1 输出查询结果  3.4.2 对查询结果进行投影  3.5 group子句  3.5.1 IGrouping泛型接口  3.5.2 分组查询  3.6 into子句  3.7 排序子句  3.7.1 OrderBy和...

    SpringBoot下的SpringAOP-day04-源代码

    SpringBoot下的Spring——DAY04——动态代理总结、AOP、自定义注解进行拦截、动态获取注解参数、通知方法 1.动态代理总结 1.1 JDK动态代理特点 1.2 CGlib动态代理 1.2.1 CGLib特点说明 1.3 动态代理的作用 2 Spring...

    Mybatis的介绍与入门

    Mybatis的介绍、入门、使用jdbc操作数据库存在的问题、Mybatis的架构 、Mybatis的入门程序、Dao的开发方法(原始dao的开发方法、接口的动态代理方式) SqlMapConfig.xml文件说明

    LINQ入门及应用 8/13

     3.3.3 动态谓词的筛选  3.4 select子句  3.4.1 输出查询结果  3.4.2 对查询结果进行投影  3.5 group子句  3.5.1 IGrouping泛型接口  3.5.2 分组查询  3.6 into子句  3.7 排序子句  3.7.1 OrderBy和...

    SSH入门实战式课程 SSH框架前言全套视频实战精讲视频教程.txt

    │ 北京动力节点SSH前言-007-代理模式-静态代理与动态代理.mp4 │ 北京动力节点SSH前言-008-代理模式-静态代理测试环境的搭建.mp4 │ 北京动力节点SSH前言-009-代理模式-解决快捷键冲突问题.mp4 │ 北京动力节点SSH...

    LINQ入门及应用 1/13

     3.3.3 动态谓词的筛选  3.4 select子句  3.4.1 输出查询结果  3.4.2 对查询结果进行投影  3.5 group子句  3.5.1 IGrouping泛型接口  3.5.2 分组查询  3.6 into子句  3.7 排序子句  3.7.1 OrderBy和...

    Mybatis 入门、Dao开发模式、Mapper代理开发模式、动态sql、一对一、一对多、多对多

    程序代码

    COM与COM+从入门到精通(pdf版本,含源码)

    动态负荷平衡 对象地 小结 第12章 用VC++建立COM++组件 ADO编程 ADO与OLEDB VC++中的ADO VC++的ADO扩展 建立COM++应用程序 温习IObjectContext接口 用ATL建立COM++组件 编制基于角色的安全...

Global site tag (gtag.js) - Google Analytics