Cglib代理

public class UserDaoimpl {

public void insert() {
	System.out.println("insert");

}

public void delete() {
	System.out.println("delete");

}

public void update() {

	System.out.println("update");
}

public void seach() {
	System.out.println("search");

}

}


public class Transaction {

public void begin() { System.out.println("begin"); }

public void commit() {
	System.out.println("commit");
}

}


public class DaoIntercepter implements MethodInterceptor {

private Object target;
private Transaction transaction;

public DaoIntercepter(Object target, Transaction transaction2) {
	this.target = target;
	this.transaction = transaction2;
}

/// 子代理对象
public Object createProxy() {
	Enhancer enhancer = new Enhancer();
	// 设置回调接口
	enhancer.setCallback(this);
	enhancer.setClassLoader(target.getClass().getClassLoader());
	enhancer.setInterfaces(target.getClass().getInterfaces());
	// 指定子代理的父类
	enhancer.setSuperclass(target.getClass());
	// 创建子代理对象
	return enhancer.create();
}

// 接口中的回调方法
public Object intercept(Object arg0, Method method, Object[] arg2, MethodProxy arg3) throws Throwable {

	String name = method.getName();
	if (name.equals("seach")) {
		method.invoke(target, arg2);

	} else {
		transaction.begin();
		method.invoke(target, arg2);
		transaction.commit();
	}
	return null;
}

}

public class CglibTest {

public void test() {
	UserDaoimpl userDaoimpl = new UserDaoimpl();
	Transaction transaction = new Transaction();
	DaoIntercepter daoIntercepter = new DaoIntercepter(userDaoimpl, transaction);
	UserDaoimpl userDaoimpl1 = (UserDaoimpl) daoIntercepter.createProxy();
	userDaoimpl1.insert();
}

}

转载于:https://my.oschina.net/u/2346823/blog/1581421

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值