使用InvocationHandler实现动态代理,也就是我们常说的代理模式的一种实现方式之一:(这也是从其他的地方找过来的,很浅显易懂,非原创)
上代码:
IHello接口:
public interface IHello
{
public void hello(String name);
}
IHelloImpl:
/**
* @copyright XXX
*/
package com.yourcompany.struts.proxy;
/**
* @author meemac
*
*/
public class HelloImpl implements IHello
{
/* (non-Javadoc)
* @see com.yourcompany.struts.proxy.IHello#hello(java.lang.String)
*/
public void hello(String name)
{
// TODO Auto-generated method stub
System.out.println("Hello"+name);
}
}
代理类:
/**
* @copyright XXX
*/
package com.yourcompany.struts.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
* @author meemac
*
*/
public class HelloProxyImpl implements InvocationHandler
{
private Object delegate;
public Object bind(Object delegate)
{
this.delegate = delegate;
return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
delegate.getClass().getInterfaces(), this);
}
/*
* (non-Javadoc)
*
* @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object,
* java.lang.reflect.Method, java.lang.Object[])
*/
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
Object result = null;
print("call before :" + method);
result = method.invoke(delegate, args);
print("call after :" + method);
return result;
}
private void print(String message)
{
System.out.println(message);
}
}
测试类:
/**
* @copyright XXX
*/
package com.yourcompany.struts.proxy;
/**
* @author meemac
*
*/
public class Demo
{
public static void main(String[] args)
{
HelloProxyImpl helloProxyImpl = new HelloProxyImpl();
IHello hello = (IHello) helloProxyImpl.bind(new HelloImpl());
hello.hello("你妹的,我测试下.");
}
}
分享到:
相关推荐
这里提供了静态代理和动态代理的入门写法~一看即懂!
讲述JAVA的动态代理的原理,以及通过JAVA的动态代理来实现AOP。简洁,易懂,学习AOP的入门级文档
内容概要:动态代理学习笔记,适合刚接触maven的人能让你快速入门。 适用人群:大学生或者初接触动态代理的人 使用场景及目标:mybatis框架的前驱知识
深入地探讨反射和动态代理技术,其中例子详细明白。使初学者比较容易入门!
spring framework入门(6):java中的动态代理(jdk和cglib) 博客地址:https://blog.csdn.net/u010476739/article/details/76737460
一个静态代理和动态代理的小例子,开发时使用的工具是myeclipse,直接使用myeclipse工具导入即可,希望能 给大家理解这方面的入门知识带来些作用,同时也希望大家指出不足,我可以更加进行改进
01.Nginx快速入门 02.Nginx常用模块 03.Nginx提供静态资源WEB服务 04.Nginx提供代理服务 05.Nginx提供负载均衡 06.Nginx提供ProxyCache缓存服务 07.Nginx Rewrite跳转规则与实践 08.Nginx构建Https加密传输网站(基于...
SpringAOP入门和原理分析,动态代理
本套课程是Spring入门到精通教程,课程包括Spring IoC、Spring AOP(CGLib、JDK动态代理)、Spring整合MyBatis,Spring事务管理等内容。 通过本套课程的学习,你将掌握: 1、 IoC和依赖注入 2、 AOP的原理和实际...
java基础入门,GitBook本地命令行生成,等线字体版目录:java开发入门,java编程基础,面向对象,常见对象,多线程,集合框架,网络编程,IO流,反射机制,动态代理,注解,java新特性,内存管理。
② :mybaits的mapper(代理)接口(相当于dao接口)代理开发方法(掌握)第二种要掌握 mybatis配置文件SqlMapConfig.xml*** mybatis核心: mybatis输入映射(掌握) mybatis输出映射(掌握) mybatis的动态...
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下的Spring——DAY04——动态代理总结、AOP、自定义注解进行拦截、动态获取注解参数、通知方法 1.动态代理总结 1.1 JDK动态代理特点 1.2 CGlib动态代理 1.2.1 CGLib特点说明 1.3 动态代理的作用 2 Spring...
Mybatis的介绍、入门、使用jdbc操作数据库存在的问题、Mybatis的架构 、Mybatis的入门程序、Dao的开发方法(原始dao的开发方法、接口的动态代理方式) SqlMapConfig.xml文件说明
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前言-007-代理模式-静态代理与动态代理.mp4 │ 北京动力节点SSH前言-008-代理模式-静态代理测试环境的搭建.mp4 │ 北京动力节点SSH前言-009-代理模式-解决快捷键冲突问题.mp4 │ 北京动力节点SSH...
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和...
程序代码
动态负荷平衡 对象地 小结 第12章 用VC++建立COM++组件 ADO编程 ADO与OLEDB VC++中的ADO VC++的ADO扩展 建立COM++应用程序 温习IObjectContext接口 用ATL建立COM++组件 编制基于角色的安全...