cglib中生成类的工作是由AbstractClassGenerator的create方法使用相应的生成策略完成,具体代码如下:

private GeneratorStrategy strategy = DefaultGeneratorStrategy.INSTANCE;
byte[] b = strategy.generate(this);

GeneratorStrategy是一个接口,它负责调用ClassGenerator 的generateClass方法来生成类。DefaultGeneratorStrategy是cglib提供的一个默认的生成策略,部分代码如下:

public class DefaultGeneratorStrategy implements GeneratorStrategy {
public static final DefaultGeneratorStrategy INSTANCE = new DefaultGeneratorStrategy(); public byte[] generate(ClassGenerator cg) throws Exception {
DebuggingClassWriter cw = getClassVisitor();
transform(cg).generateClass(cw);
return transform(cw.toByteArray());
} protected DebuggingClassWriter getClassVisitor() throws Exception {
return new DebuggingClassWriter(ClassWriter.COMPUTE_MAXS);
}
... ...
protected byte[] transform(byte[] b) throws Exception {
return b;
} protected ClassGenerator transform(ClassGenerator cg) throws Exception {
return cg;
}
}

DefaultGeneratorStrategy实现了ClassGenerator接口,并提供两个transform方法。用户可以通过继承DefaultGeneratorStrategy并重写相关的方法来检查或者修改生成类。

类生成策略和命名策略一样,使用了策略设计模式,用户可以通过实现GeneratorStrategy接口来自定义生成策略,并使用AbstractClassGenerator的setStrategy方法来设置自定义策略。

最新文章

  1. 恢复SQL Server被误删除的数据
  2. 从零开始学 Java - Spring 使用 Quartz 任务调度定时器
  3. JS的多线程
  4. 从.o文件中提取指定开头依赖于外部接口的脚本
  5. JavaScript跨域方法
  6. 服务器端与客户端TCP连接入门(一)
  7. 11、C#基础整理(特殊集合和哈希表)
  8. R与并行计算(转)
  9. 2,返回Json
  10. 21.Odoo产品分析 (三) – 人力资源板块(2) – 工时表(1)
  11. linux安装MongoDB
  12. 使用fpm 方便快速生成postgresql extension分发包
  13. BZOJ.5120.[清华集训2017]无限之环(费用流zkw 黑白染色)
  14. scala 基础到高阶
  15. ubuntu系统下安装pyspider:搭建pyspider服务器新手教程
  16. 【RF库Collections测试】Get Slice From List
  17. 2.spring cloud eureka client配置
  18. Hibernate3的jar包
  19. delphi取括号内或括号外的内容
  20. 十五、Node.js-fs模块(中)

热门文章

  1. Shell编程学习---第五篇:Shell的输入和输出
  2. 【DataStructure In Python】Python实现各种排序算法
  3. Windows系统性能提升方法
  4. eclipse 修改设置Ctrl+Shift+F长度
  5. [liu yanling]黑盒测试用例设计方法
  6. 在Python中的格式化
  7. Web---JSP注册技术的的演绎(3代)-JSP/EJB/Servlet/POJO/JavaBean
  8. POJ 1904 King's Quest 强联通分量+输入输出外挂
  9. 如何将SQL Server运行到Windows Azure上
  10. 【Kafka入门】Kafka入门第一篇:基础概念篇