java cglib动态代理 实例

注意:有些类并没有实现接口,则不能使用JDK代理,这就要使用cglib动态代理了

实例如下:

package com.cglibproxy;
/**
 * 1、定义一个Student接口
 */
public interface Student {
//增加学生方法
public void addStudent();
}


package com.cglibproxy;
/**
 *2、 学生的实现类,并没有实现接口,所以不能使用jdk动态代理,只能使用cglib动态代理
 *
 */
public class StudentImpl {
public void addStudent(){
System.out.println("增加学生的方法.....");
}

}


3、动态代理类实现

package com.cglibproxy;


import java.lang.reflect.Method;


import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;


public class StudentProxy implements MethodInterceptor{
private Object target;

//创建代理对象
public Object getInstance(Object target){
this.target=target;
Enhancer enhancer=new Enhancer();
enhancer.setSuperclass(this.target.getClass());
enhancer.setCallback(this);
//创建代理对象
return enhancer.create();
}


@Override
public Object intercept(Object obj, Method method, Object[] args,
MethodProxy proxy) throws Throwable {
System.out.println("事物开始...");
proxy.invokeSuper(obj, args);
System.out.println("事物结束...");

return null;
}

}

4、测试类

package com.cglibproxy;

public class TestCglibProxy {

/**
* main函数测试cglib动态代理
*/
public static void main(String[] args) {
//StudentImpl studentImpl=new StudentImpl();
StudentProxy studentProxy=new StudentProxy();
StudentImpl student=(StudentImpl)studentProxy.getInstance(new StudentImpl());
student.addStudent();

}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值