Cglib动态代理
来源:互联网 发布:数码宝贝网络侦探进化 编辑:程序博客网 时间:2024/06/09 13:43
package cn.itcast.proxy.cglib;//只有实现类,没有接口public class UserDaoImpl { public void save(){ System.out.println("保存用户"); }}
package cn.itcast.proxy.cglib;import java.lang.reflect.Method;import org.springframework.cglib.proxy.Enhancer;import org.springframework.cglib.proxy.MethodInterceptor;import org.springframework.cglib.proxy.MethodProxy;//使用Cglib实现动态代理,适合目标类没有实现接口,代理类是目标类的子类,生成的代理对象是目标类子类的对象//使用Cglib必须要导入cglib包,Spring中已集成public class UserDaoImplProxyUtils { public static UserDaoImpl getProxy(){ //Ehancer是Cglib的核心类 Enhancer enhancer = new Enhancer(); //要代理哪个目标类 enhancer.setSuperclass(UserDaoImpl.class); //设置回调函数,代理对象的方法一执行,就会调用回调函数 enhancer.setCallback(new MethodInterceptor() { @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { if("save".equals(method.getName())){ System.out.println("开启事务"); } Object invoke = methodProxy.invokeSuper(obj, args); if("save".equals(method.getName())){ System.out.println("关闭事务"); } return invoke; } }); //返回代理对象 UserDaoImpl proxy = (UserDaoImpl) enhancer.create(); return proxy; }}
package cn.itcast.proxy.cglib;public class UserDaoImplProxyTest { public static void main(String[] args) { UserDaoImpl user = new UserDaoImpl(); user.save(); System.out.println("..................."); UserDaoImpl proxy = UserDaoImplProxyUtils.getProxy(); proxy.save(); }}
阅读全文
0 0
- 动态代理-CGLib动态代理
- 初识CGLIB动态代理
- Cglib 动态代理
- CGLib 动态代理
- 动态代理-->cglib
- cglib动态代理介绍
- cglib动态代理
- CGLIB 动态代理。
- CGLIB动态代理
- CGLIB实现动态代理
- cglib 动态代理
- cglib动态代理模式
- cglib动态代理
- cglib动态代理
- CGLIB 动态代理
- cglib动态代理
- 动态代理CGLIB
- CGLIB动态代理应用
- 谷歌Chrome居首,微软Edge增长缓慢:最新浏览器市场份额排名出炉
- 安卓使用Termux做渗透测试(演示sqlmap安装,并附上一个神器)
- ADT
- form表单 重置按钮
- 数据结构顺序表的定义(Java)
- Cglib动态代理
- 算法导论读后感-之堆,堆排序,堆排序的应用
- 路透:百度扎根硅谷 引领自动驾驶汽车研发
- 合唱团问题-懵逼-强行做-错-更懵逼-继续做-完成
- POJ
- Python selenium的js扩展实现
- 剑指offer——面试题7:用两个栈实现队列
- 计蒜客————Anniversary Cake
- nyoj488 素数环(dfs)