博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CGLIB概述
阅读量:4178 次
发布时间:2019-05-26

本文共 856 字,大约阅读时间需要 2 分钟。

1. 代理与被代理对象(目标对象)

代理可以视为目标对象的包装箱,任何对目标对象的访问,都必须通过代理完成,因而可以在代理上对访问目标对象的请求进行控制等。

JDK 1.3开始提供JDK动态代理机制,但是其应用受到一定的限制,即目标对象必须实现一个接口。

对于未实现接口的目标对象,就不能使用JDK提供的动态代理功能,而通过CGLIB库可以实现其动态代理。

 

2. CGLIB(ByteCode Generation Library)是一款Java代码生成库,可以在运行时扩展Java类并实现Java接口。

基于ASM的支持,CGLIB提供了一组高层API,用以生成和转换Java字节码,可用于AOP等的动态代理对象生成和对象的字段访问拦截。

1) CGLIB在应用中的架构模型

其中,ASM是一款小巧高效的字节码操作框架,用于转换和生成字节码。ASM可以视为基于事件的字节码分析器。ASM不仅仅可以用于操作Java字节码,而且可以用于操作脚本语言。

2) CGLIB的版本

时间

版本

说明

Apr. 2016

cglib 3.2.2

Bug fix

Feb. 2016

cglib 3.2.1

regression with Enhancer/CallbackFilter

Oct. 2015

cglib 3.2.0

Java8 compatibility

Dec. 2013

cglib 3.1

update to ASM 4.2

Jan. 2009

cglib 2.2.3

 

May. 2008

cglib 2.2

 

Oct. 2005

cglib 2.1.3

 

Jun. 2005

cglib 2.1.1

 

 

3) CGLIB的二进制发布包

CGLIB的二进制发布包有如下2种形式注意应用时的选择:

cglib-#.#_#.jar,只包含CGLIB类,可以被扩展,但是必须依赖ASM API扩展。

cglib-nodep-#.#_#.jar,包含了CGLIB类和ASM类,但是不可扩展。

 

参考文献:

旧官网

新官网

转载地址:http://jjlai.baihongyu.com/

你可能感兴趣的文章
SpringBoot项目启动完成自动打开网址
查看>>
记录一下把mapper.xml文件放在java的坑
查看>>
反射的使用
查看>>
使用Stream排序分组
查看>>
linux安装mysql 5.7.23二进制 安装jdk tomcat
查看>>
mysql总结 windows 版本
查看>>
POI 导出工具类
查看>>
HTTP请求工具类
查看>>
Ngnix+tomcat 集群以及session共享
查看>>
Nginx配置多个项目放在不同的tomcat中,共享同一个端口
查看>>
mysql的JDBC连接工具类
查看>>
ORACLE的JDBC连接工具类
查看>>
利用多线程(用到原子类AtomicInteger)往数据库批量插入大量数据
查看>>
多个线程操作数组
查看>>
定长线程池的应用
查看>>
生产者和消费者模式
查看>>
ArrayBlockingQueue的简单使用
查看>>
Git 常用命令总结(一)
查看>>
Git 常用命令总结(二)
查看>>
JAVA 并发——synchronized的分析
查看>>