本帖最后由 明天,你好 于 2013-5-22 22:16 编辑
- public Connection getConnection() throws SQLException {
- if(list.size() == 0){
- for (int i = 0; i < 5; i++) {
- Connection conn = DriverManager.getConnection(
- "jdbc:mysql:///mydb", "root", "root");
- list.add(conn);
- }
- }
- final Connection conn = list.remove(0);
- return (Connection)Proxy.newProxyInstance(conn.getClass().getClassLoader(), conn.getClass().getInterfaces(), new InvocationHandler(){
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- if("close".equals(method.getName())){
- 。。。。。。
- return null;
- }
- return method.invoke(conn, args);
- }
- });
- }
复制代码 看MySQL时用动态代理类改写connection 的close() 方法。动态代理能看明白就是其中invoke(xx,xx,xx)中的proxy 是什么东东忘了,视频删了 不想再下载,请了解动态代理类的同学,仔细给解释一下 动态代理类的运行过程。
|