Java动态代理
来源:互联网 发布:光头大大捏脸数据网盘 编辑:程序博客网 时间:2024/06/06 15:04
主要使用了java.lang.reflect中的Proxy类,
方法如下:
static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
下面是利用JDBC做的测试,类似于重写了Connection的close方法。代码如下:
package com.victor_03;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.sql.Connection;import java.sql.DriverManager;import org.junit.Test;public class MyPool { private String url = "jdbc:mysql://192.168.244.144:3306/test"; private String user = "root"; private String password = "123456"; @Test public void ProxyTest() throws Exception { Class.forName("com.mysql.jdbc.Driver"); final Connection conn = DriverManager.getConnection(url, user, password); Connection proxy = (Connection) Proxy.newProxyInstance( conn.getClass().getClassLoader(), //类加载器 //目标对象实现的接口,因该Connection本来就是个结果,故使用这种方法,如果目标对象本身是类,则使用方式为:conn.getClass().getInterfaces() new Class[] { Connection.class }, new InvocationHandler() { //当调用conn对象方法时,自动触发事务处理器 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = null; String methodName = method.getName(); if ("close".equals(methodName)) { System.out.println("开始执行close方法"); } else { result = method.invoke(conn, args); } return result; } }); proxy.close(); }}
0 0
- Java 代理,动态代理
- [Java] Java 动态代理
- java代理及动态代理
- java代理模式--动态代理
- Java静态代理、动态代理
- Java 代理之 动态代理
- Java 代理与动态代理
- java静态代理,动态代理
- 代理模式&java动态代理
- Java代理与动态代理
- Java静态代理动态代理
- JAVA代理模式--动态代理
- java 代理和动态代理
- JAVA动态代理 代理模式
- Java动态代理--jdk代理
- Java动态代理--cglib代理
- Java 代理与动态代理
- java代理模式-动态代理
- (转)运维角度浅谈MySQL数据库优化
- 恢复MySQL主从数据一致性的总结
- 利用Shell脚本将MySQL表中的数据转化为json格式
- Android 中Timer的用法
- 如何在制作jar包时引用第三方jar包
- Java动态代理
- java 中static 关键字的 用处
- MySQL的分页优化
- MySQL监控利器-Innotop
- UIWindow的一点儿思考
- 简书APP、网页版产品分析
- JPA与ORM以及Hibernate
- 如何部署Icinga客户端
- MyCAT简易入门