深入浅出CGlib-打造无入侵的类代理
转自?http://llying.iteye.com/blog/220452
?
CGlib是什么??
CGlib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。?
当然这些实际的功能是asm所提供的,asm又是什么?Java字节码操控框架,具体是什么大家可以上网查一查,毕竟我们这里所要讨论的是cglib,?
cglib就是封装了asm,简化了asm的操作,实现了在运行期动态生成新的class。?
可能大家还感觉不到它的强大,现在就告诉你。?
实际上CGlib为spring aop提供了底层的一种实现;为hibernate使用cglib动态生成VO/PO (接口层对象)。?
下面我们将通过一个具体的事例来看一下CGlib体验一下CGlib。?
* CGlib 2.13?
* ASM 2.23?
以一个实例在简单介绍下cglib的应用。?
我们模拟一个虚拟的场景,模拟对表的操作。?
1. 开始我们对表提供了CRUD方法。?
我们现在创建一个对Table操作的DAO类。?
ok,现在"李四"也可以使用query方法了,其他方法仍然没有权限。?
哈哈,当然这个代理的实现没有任何侵入性,无需强制让dao去实现接口。
?