Java动态代理之cglib
来源:互联网 发布:淘宝天猫的运营模式 编辑:程序博客网 时间:2024/06/14 04:34
cglib是对jdk动态代理的补充,弥补了因没有接口的类生成代理类的缺失。
下面通过简单的例子学习一下cglib的使用,当然,要是用需要第三方的jar包,jar包自行下载。
业务类
public class BankService { public void save(){ System.out.println("存钱..."); }}
业务增强类
public class ServiceEnhancer { public static void before(){ System.out.println("检查钱是否完整无存"); } public static void after(){ System.out.println("如果有错,就回滚"); }}
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 CglibProxy implements MethodInterceptor{ private Enhancer enhancer = new Enhancer(); public Object getProxy(Class<?> clazz){ //设置 需要创建子类的类 enhancer.setSuperclass(clazz); enhancer.setCallback(this); return enhancer.create();//通过字节码技术创建子类实例 } @Override public Object intercept(Object obj, //目标类实例 Method method, //目标类方法的反射对象 Object[] args, //方法的动态入参 MethodProxy proxy //代理类实例 ) throws Throwable { ServiceEnhancer.before(); Object result = proxy.invokeSuper(obj, args); ServiceEnhancer.after(); return result; }}
public class CglibDemo { public static void main(String[] args) { CglibProxy proxy = new CglibProxy(); BankService bankservice = (BankService) proxy.getProxy(BankService.class); bankservice.save(); //com.proxy.cglib.BankService$$EnhancerByCGLIB$$82923c9a@2e5d6d97 //System.out.println(bankservice); }}
阅读全文
1 0
- Java动态代理之CGLIB
- Java动态代理之CGLIB
- Java动态代理之cglib
- java之架构基础-动态代理&cglib
- java之架构基础-动态代理&cglib
- java之架构基础-动态代理&cglib
- 动态代理之cglib
- 动态代理之CGLIB
- 动态代理之CGLib
- 动态代理之cglib
- 【Java】CGlib动态代理
- Java-CGLib动态代理
- CGLib动态代理 java
- Java进阶之 JDK动态代理与Cglib动态代理
- java动态代理模式之Cglib动态代理机制
- java动态代理之cglib动态代理实现
- 大话java之JDK动态代理和CGLIB动态代理
- 动态代理之cglib代理
- Python enumerate函数无法顺序遍历字典
- CUDA Samples:Vector Add
- c语言返回局部变量
- SpringBoot非官方教程 | 第十五篇:Springboot整合RabbitMQ
- Linux作为服务端,Windows作为客户端socket通信
- Java动态代理之cglib
- Redis用bitset(bitmap)来统计日活跃量
- SpringBoot非官方教程 | 第十篇: 用spring Restdocs创建API文档
- leetcode 506. Relative Ranks
- UVA1579,俄罗斯套娃
- VMware Workstation虚拟机Ubuntu中实现与主机共享(复制和粘贴)
- SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,构建优雅的Restful API
- c++文件保存与读取
- [模板]线性筛素数