使用案列:
public class TransactionInvocationHandler implements InvocationHandler{
//zs:target
private Object target;
public TransactionInvocationHandler(Object target){
this.target = target;
}
/*
*
* 该invoke方法就是 代理类的业务方法 (ls的送花方法)
*
* method:是真正实现类的业务方法(zs的送花方法)的反射方法对象
* args:是真正实现类的业务方法的参数
*
* 这个invoke既然是代理类的业务方法(ls的送花方法),代理类的业务方法的构成
* 一部分为使用成员变量(zs)实现业务逻辑
* 一部分为对于业务逻辑的扩充
*
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Connection conn = null;
Object obj = null;
try{
conn = DBUtil.getConn();
conn.setAutoCommit(false);
//业务逻辑
/*
* zs调用送花方法
*
* zs:target
* method:参数method
*
*/
obj = method.invoke(target, args);
conn.commit();
}catch(Exception e){
conn.rollback();
e.printStac