CGLib 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
CGLib 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
CGLib 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
CGLib 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
CGLib 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache-2.0
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织
地区 不详
投 递 者 不详
适用人群 未知
收录时间 2008-09-24

软件简介

CGLib (Code Generation Library) 是一个强大的、高性能、高质量的 Code 生成类库。它可以在运行期扩展 Java 类与实现 Java 接口。Hibernate 用它来实现 PO 字节码的动态生成。CGLib 比 Java 的 java.lang.reflect.Proxy 类更强的在于它不仅可以接管接口类的方法,还可以接管普通类的方法。

CGLib 的底层是Java字节码操作框架 —— ASM

查看 cglib 的 JavaDoc 文档。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (1)

加载中
@红薯 这個项目最新的项目地址在 https://github.com/cglib/cglib ,不过原来的地址目前仍然有效,你可以更新也可以不更新。 CGLib
2014/09/04 14:09
回复
举报
更多评论
暂无内容
发表了博客
2018/07/24 17:00

cglib demo

cglib 不同于 基于接口的 动态代理, cglib是基于类的代理, 代码如下: package com.guo.patterns.proxy; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import java.lang.reflect.Method; /** * Created by gitbool on 2018/7/24 15:59. */ class Hello1 { public String hello() { System.out.println("excute...

0
0
发表了博客
2018/03/01 18:09

cglib的使用

cglib大名在java界如雷贯耳,众多优秀的开源项目均使用其来实现各自的功能(spring aop,hibernate等等),这里主要简单介绍一下cglib的使用,对比一下java原生的proxy还有javaassist. 说到cglib第一印象就是动态代理(啥是动态代理?请百度<设计模式>),没错,这是它牛逼的功能之一, 使用cglib构建动态代理核心类就是Enhancer,作用如其名:增强.它能够对目标类的方法进行增强.上代码: /** * Created by wally on 3/1/18. */ public...

0
0
发表了博客
2012/05/22 10:08

CGLIB是什么

写了一半。网页一黑。。东西就都没了。。。强烈建议OSC的博客有个自动保存功能!!!! CGLIB是一个反射的包,和JDK的反射不同,cglib反射的对象可以不用实现接口。cglib是就ASM的,引用一个图,很清晰。 spring的AOP的实现一种是使用原生的jdk的反射,一种就是使用cglib 引用一下: CGlib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。 不多说了,直接上helloword的例子。 使用的时候报了如...

0
1
发表了博客
2019/06/02 22:12

CGLib动态代理

  上一篇我们说过了jdk动态代理,这一篇我们来看看CgLib动态代理,本来以为CGLib动态代理和JDK实现的方式差不多的,但是仔细了解一下之后还是有很大的差异的,这里我们先简单说一下这两种代理方式最大的区别,JDK动态代理是基于接口的方式,换句话来说就是代理类和目标类都实现同一个接口,那么代理类和目标类的方法名就一样了,这种方式上一篇说过了;CGLib动态代理是代理类去继承目标类,然后重写其中目标类的方法啊,这样也...

0
0
发表了博客
2012/06/04 13:03

cglib动态代理

Spring AOP使用了两种代理机制,一种是基于JDK的动态代理,另一种是基于CGLib的动态代理, 之所以需要两种代理机制,很大程度上是因为JDK本身只提供基于接口的代理,不支持类的代理。 切入点一般是方法调用之前,之后或者两端。 1、要代理的类 package com.yt.manager.proxy; public class ServicesImpl {   public void outPut() {     // TODO Auto-generated method stub     System.out.println("to run outPut method..........

0
2
发表了博客
2014/12/30 21:51

CGlib简单介绍

CGlib简单介绍 CGlib概述: cglib(Code Generation Library)是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。 cglib封装了asm,可以在运行期动态生成新的class。 cglib用于AOP,jdk中的proxy必须基于接口,cglib却没有这个限制。 CGlib应用: 以一个实例在简单介绍下cglib的应用。 我们模拟一个虚拟的场景,关于信息的管理。 1)原始需求是任何人可以操作信息的create,update,delete,...

0
0
2020/02/27 13:08

cglib动态代理

什么是cglib Cglib是一个强大的、高性能的代码生成包,它广泛被许多AOP框架使用,为他们提供方法的拦截。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。JDK必须强制基于interface接口类型:Spring事务Transactional和动态代理(上)-JDK代理实现 cglib的应用 cglib应用很广泛,根据cglib在Github上的描述(cglib),存在以下应用: Byte Code Engineering Library 也就是JavaClass字节码文件,这个库可以很方...

0
0
2019/12/15 17:53

Implement CGLIB in ABAP

What is cglib?A Byte Code Generation Library which is high level API to generate and transform Java byte code. It is used in various scenarios such as AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access. See one example in unit test. In line 17, a new dynamic proxy class is generated as mock. In line 19, we tell the proxy, "if get(0) is called on th...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于服务端专区
2019/10/29 15:07

BigDecimal的拷贝问题

DO和BO对象中有相同的BigDecimal类型的属性,用cglib的BeanCopier进行对象拷贝的时候,DO中的BigDecimal属性拷贝不到BO中去,BO的属性值为null,拷贝的时候没有使用Converter的。是要加上Converter才可以吗?如果加的话是要自定义Converter吗?

1
0
发表于服务端专区
2019/08/28 17:28

@Transactional标注到interface的方法上,然后事务代理使用CGLIB,事务可以生效么?

一直以来,都认为该情况事务是不生效的,因为CGLIB基于继承做的代理,需要将@Transactional标注到实现类的方法上才可以,但是最近在一个项目debug的时候发现@Transactional标注在interface方法上,然后通过@Autowired引入该bean,发现其CGLIB代理内部有事务增强,大致如下 public interface TestServicei { @Transactional String save(String params); } @Service public class TestService implements TestSer...

2
0
发表于大前端专区
2018/12/24 17:04

springboot 对有实现接口的代理类为何使用cglib?求大佬

目标类

12
1
2019/01/22 23:17

为什么通过spring的cglib代理类无法取到被代理对象的public成员属性?

service层: @Service public class MyService { public String str = new String("hello world"); @Transactional(rollbackFor = Throwable.class) public void test() { XXXX } } controller层: @Controller public class MyController { @Autowired private MyService myService; @RequestMapping("/test") public String test() { log.info("{}"...

7
2
2018/12/10 16:24

sping aop动态代理指定方法疑问

JDK动态代理和CGLIB的动态代理都会对目标类的所有方法进行加强处理,那么sping aop是如何将不需要加强的方法过滤的呢。

3
0
2018/11/03 21:08

java通过Cglib增强获得了一个Class对象,如何能够转换成byte数组

instrument获取到了class的字节数组,进行一系列增强后得到了Class对象,但是要返回byte数组。有什么办法转换么?

1
1
发表于开发技能专区
2018/09/18 16:44

cglib执行有参动态代理报错

今天想试试cglib的代理方法,方法是带有参数的 idea中报了这个错误: Exception in thread "main" java.lang.IllegalArgumentException: Constructor not found //生成代理类,target是代理目标 public <T>T createProxy(T target,Class[] args,Object[] argsValue){ Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(target.getClass()); enhancer.setCallback(this); re...

3
0
发表于服务端专区
2018/08/21 16:51

关于Cglib动态代理

Cglib动态代理的理解,关键于动态生成代理类的类结构。 最近准备写一篇关于代理的经验案例,但是遇到如下问题 假设PersonManager2为目标类。eat方法为其逻辑方法。现在使用cglib动态代理。输出动态生成的代理类(如下图),eat方法从此处的代码层面看没回调MethodInteceptor.intecept方法(实际上是有调用intecept的,只是不理解为什么反编译之后没有看到回调逻辑)??求解...

1
0
发表了问答
2017/06/05 08:37

怎样使用Fastjson转换CGLIB生成的代理对象?

import java.lang.reflect.Method; import com.alibaba.fastjson.JSON; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; public class Test03 {   interface User {     String getName();     void setName(String name);   }   static class UserImpl implements User {     private String name = "user";     @Override     public String getName(...

1
0
发表了问答
2016/06/17 14:16

有没有办法在项目启动时aop一个父类,子类调用它的方法都能切入

用cglib实现,父类是jar包里的类

1
0
发表了问答
2011/11/13 20:49

求jdk 静态代理、动态代理、cglib、AOP、Struts2的拦截器的示例

2
0
发表了问答
2011/04/20 18:37

怎么给java对象添加动态添加属性和方法?

如题,用cglib? 貌似只能生成代理对象,加入横切代码啊

6
1
发表了问答
2011/08/15 15:49

动态实时跟踪你的java程序

文章转自:http://www.tbdata.org/archives/1851 之前有写 基于AOP的日志调试 讨论一种跟踪Java程序的方法, 但不是很完美.后来发现了 Btrace , 由于它借助动态字节码注入技术 , 实现优雅且功能强大. 只不过, 用起来总是磕磕绊绊的, 时常为了跟踪某个问题, 却花了大把的时间调试Btrace的脚本. 为此, 我尝试将几种跟踪模式固化成脚本模板, 待用的时候去调整一下正则表达式之类的. 跟踪过程往往是假设与验证的螺旋迭代过程, 反复的...

1
30
发表了问答
2014/07/28 12:49

CGLib 怎样实现代理叠加

@黎明伟 你好,想跟你请教个问题: 我看到你之前也遇到过这样的问题 http://www.iteye.com/problems/102520

1
0
发表了问答
2014/07/22 22:43

spring中cglib如何配置

java项目经常要用到ssh框架,可是用接口注入的话要多写接口方法,比较麻烦,cglib不用,请问spring中如何配置cglib啊?包已经下载了

2
0
发表了问答
2014/07/15 16:57

spring注解时AOP失效,XML配置<bean>正常

Spring3使用注解方式实现AOP的时候,被代理的Customer对象使用@Service或者@Component注解时拦截失效,无法生成Cglib代理。 但是 使用Spring的XML bean标签声明Customer对象的时候是可以生成Cglib代理对象并且拦截成功的。 有人遇到过类似的问题吗? 第一种情况: 如下使用@Service注解方式声明对象,无法生成Cglib代理对象,无法拦截: @Service public class Customer{ //AOP想拦截的方法 @Cache(time=3600,key=xxx...

5
1
发表了问答
2014/06/26 10:36

Spring高并发下Cglib代理性能问题

这两天做压力测试(服务器是IBM P750 8C 32G),高并发下如果用反射直接调用一个简单的服务(空方法,直接return)TPS大概能到将近300,如果用Spring的applicationContext getBean来获取服务对象调用的话(服务bean是prototype类型),TPS只有不到90。 在日志里记录了一下执行时间,用反射调用服务执行时间基本在10毫秒以内,但是用Spring的ApplicationContext执行时间在1秒左右。 这样的问题是不是cglib代理引起的?有什么解决...

4
0
发表了问答
2013/11/26 17:37

VirtualMachine.list()返回空的列表

环境: tomcat 7. JDK1.6. 目标:获取正在运行的jvm列表 尝试代码: for (int i=0; i<VirtualMachine.list().size(); i++) { VirtualMachineDescriptor vi = VirtualMachine.list().get(i); System.out.println("**PID :"+vi.id()+" **DISPLAYNAME:"+vi.displayName()); } 在eclipse中可以得到正常的结果,但是打成war包在tomcat的webapas下就不行了,返回空的列表。tomcat和jdk都是同一个,是怎么回事呢?大家有什么想...

6
0
发表了问答
2013/11/05 13:31

使用CGLib代理报java.lang.StackOverflowError问题

package sun.testProxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import org.junit.Test; public class TestProxy {   @Test   public void testProxy() {     Hello helloProxy = new HelloProxy();     helloProxy.say("Su...

4
0
发表了问答
2013/06/13 20:37

spring强制cglib代理不起作用?附异常信息

配置了强制使用cglib,但spring还是使用JDK代理service,所有的service都实现了IGenericService接口,而且在有注入bean的地方,会报错 Cannot convert value of type [$Proxy10 implementing org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised,net.sf.cglib.proxy.Factory,com.xxx.service.IGenericService] to required type [com.xxx.service.impl.UserService] for property 'userService': no...

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
1 评论
104 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部