- 注册时间
- 2011-3-21
- 最后登录
- 2022-3-22
- 在线时间
- 1191 小时
- 阅读权限
- 200
- 积分
- 9457
- 帖子
- 1256
- 精华
- 0
- UID
- 1
|
新手同学们来一起学习学习!
视频下载地址:
http://u.115.com/file/dnhblze8
或者
http://www.gokuai.com/f/4Y6V2799JeHq7MFD- public static Connection getConnection() throws SQLException, ClassNotFoundException {
- Connection conn = newConnection();
- // proxy 中可以统一对所有成员方法进行拦截
- Connection proxy = newProxyConnection(conn);
- return proxy;
- }
- public static Connection newProxyConnection(Connection conn) {
- Handler handler = new Handler(conn);
- Class<?>[] interfaces = new Class<?>[] {
- Connection.class
- };
- // 动态创建 实现了某些接口 的实例
- Object object = Proxy.newProxyInstance(
- Connection.class.getClassLoader()
- , interfaces
- , handler
- );
- return (Connection) object;
- }
复制代码- package org.iscripts.proxy;
- import java.lang.reflect.Method;
- import java.sql.Connection;
- public class Handler implements java.lang.reflect.InvocationHandler {
- private Connection conn ;
-
- public Handler(Connection conn) {
- this.conn = conn;
- }
-
- @Override
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- Object result = null;
-
- // 很方便对 代理对象的所有成员方法,进行统一拦截
- if (method.getName().equals("close")) {
- System.out.println("close 方法不允许调用!");
- } else {
- result = method.invoke(conn, args);
- System.out.println(method.getName() + " 方法己被调用!");
- }
-
- return result;
- }
- }
复制代码 |
-
1
查看全部评分
-
|