package com.xk.dao;
public interface Count {
public void queryCount();
}
package com.xk.dao.impl;
import com.xk.dao.Count;
public class CountImpl implements Count {
public void queryCount() {
System.out.println("Query Count Now!");
}
}
package com.xk.dao.impl;
import java.lang.reflect.Proxy;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationHandler;
public class CountProxy implements InvocationHandler {
private Object target = null;
public Object bind(Object target) {
this.target = target;
return Proxy.newProxyInstance(target.getClass().getClassLoader(),
target.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result=null;
System.out.println("Transcation Before!");
result=method.invoke(target, args);
System.out.println("Transcation End!");
return result;
}
public Object getTarget() {
return target;
}
public void setTarget(Object target) {
this.target = target;
}
}
package com.xk.test;
import com.xk.dao.Count;
import com.xk.dao.impl.CountImpl;
import com.xk.dao.impl.CountProxy;
public class testCountDao {
public static void main(String[] args){
CountProxy xp = new CountProxy();
Count c = (Count)(xp.bind(new CountImpl()));
c.queryCount();
}
}