动态代理(无接口)

第一步 创建类,实现接口 MethodInterceptor


第二步实现接口里面的方法intercept,在这个方法里面写增强的逻辑

 

第三步在类里面,创建方法,让这个方法返回子类代理对象

publicclass CGLib {

 

    publicstaticvoid main(String[] args) {

       MyUserDao myUserDao = new MyUserDao();

       UserDao userDao = myUserDao.createUserDao();

       userDao.find();

    }

}

 

//增强UserDao类里面find方法

class MyUserDao implements MethodInterceptor {

 

    //创建方法,让这个方法返回子类代理对象

    public UserDao createUserDao() {

       Enhancer enhancer = new Enhancer();

       enhancer.setSuperclass(UserDao.class);

       enhancer.setCallback(this);

       return (UserDao) enhancer.create();

    }

   

    //实现接口里面的方法

    public Object intercept(Object obj, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {

       //UserDao类里面find方法执行

       methodProxy.invokeSuper(obj, objects);

       //增强逻辑

       System.out.println("增强.................");

       returnnull;

    }

}

 

class UserDao {

    publicvoid find() {

       System.out.println("userdaofind.........");

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值