静态代理很麻烦,对象每增加一个方法,静态代理都要增加一个方法。所以使用动态代理
动态代理是对对象进行代理,而是对某一个功能进行代理,只要有接口就行了,弊端必须有接口,因为接口必须有个类来实现这个接口,实现类中就可以对接口进行功能方法的增强,如果没有接口,可以用子类继承父类调用父类的方法(super.regUser();)如果每一方法都是这样继承,也很麻烦,如果能动态生成子类就可以方便多了
动态代理
public class TxProxy implements InvocationHandler {
private Object target; // 目标对象
public TxProxy(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("=== 开始事务 ===");
Object result = method.invoke(target, args); // 调用原方法
System.out.println("=== 提交事务 ===");
return result;
}
}