java动态代理复习
2015-09-12 15:28
387 查看
package com.free.testProxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** * 动态代理的三个条件 * 1.有接口 * 2.被代理类实现了该接口 * 3.创建代理类 * */ public class ProxyConnection { private Connection connection; public Connection Getproxy() { Connection connection = (Connection)Proxy.newProxyInstance(jdbcConnection.class.getClassLoader(),jdbcConnection.class.getInterfaces(),new InvocationHandler() { //只要调用代理类的方法都会经过该方法,aop思想 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated mehod stub System.out.println("1"); //调用被代理类自己的方法 System.out.println(proxy.getClass()+""+method.getDeclaringClass()+method.invoke(jdbcConnection.class.newInstance(), args)); // method.invoke(proxy, args); //执行代理类方法之后的操作 System.out.println("2"); return null; } }); return connection; } public static void main(String[] args) { Connection connection2 = new ProxyConnection().Getproxy(); connection2.close(); } }
相关文章推荐
- 【Java多线程】-线程池
- 深入理解java的finalize、GC、close()的优劣
- Struts2的分页处理
- Ubuntu JavaWeb类型项目一条龙环境搭建
- Java泛型Restletclient
- 文件的编码
- springIOC注解
- 大数的除法 不使用BigInteger Java实现
- java的继承和接口
- Java 内部类
- 关于java中的异常问题 1
- 轻量级Java开源日志组件--ahct.log.JLogger
- Spring 定时任务之 @Scheduled cron表达式
- Java学习之基本数据类型
- 分析JAVA应用CPU占用过高的问题
- 【Leetcode】Remove Duplicates from Sorted List in JAVA
- Java学习之ThreadLocal
- java中boolean与字符串或者数字1和0的转换
- [Java] 新生代和老年代垃圾回收策略
- NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String