简介
CGLIB(Code Generation Library) 是一个开源项目!它是一个强大的,高性能,高质量的 Code 生成类库,它可以在运行期扩展 Java 类与实现 Java 接口。Hibernate 支持它来实现 PO(Persistent Object 持久化对象) 字节码的动态生成。
使用
1、引入 CgLib 支持 Jar,点击下载。
2、编写被代理类:
// com.zze.service.Waiter
public class Waiter {
public void service() {
System.out.println("正在服务");
}
}
3、使用 CGLIB 提供的动态代理:
@Test
public void test() {// 创建核心类对象
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(Waiter.class);
enhancer.setCallback(new MethodInterceptor() {
@Override
public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
// 判断方法是否是 save
if ("service".equals(method.getName())) {
// 增强,权限校验
System.out.println("权限校验...");
}
return methodProxy.invokeSuper(o, args);
}
});
Waiter customerDaoProxy = (Waiter) enhancer.create();
customerDaoProxy.service();
}
评论区