动态构造 Java 类的一种方法: javassist (3)

原创 2007年09月25日 12:15:00

http://blog.csdn.net/loveyly/archive/2007/09/21/1794927.aspx 第一部分
http://blog.csdn.net/loveyly/archive/2007/09/21/1794971.aspx 第二部分
动态构造 Java 类, 还有个作用就是性能的提升. 巧用这个方法, 会大大的提升系统的性能. 我举个例子, OGNL2.7 版本中就是用 javassist 构造对象的访问代码, 将以前涉及到大量同步操作的代码全部去掉了. 这样一来, 访问对象就是直接调用一个类的方法, 没有任何反射在里面, 性能非常好.

对于性能提升, 这里主要运用到的是将很多通过反射或者 Java Bean Property 的操作封装成一个可以直接调用的 Java 代码. 一般来说, 这个封装类会实现一个接口, 然后调用者直接调用这个接口的某个方法去访问数据对象的某个成员变量.

也就是将一个本来不知道类型的对象实例, 封装成了一个统一的访问接口实现. 这也是用好动态 Java 生成技术的一个思路. 不过一定要注意, 这个接口定义一定是某个模块内部的. 比如 OGNL , 这个接口就只会在模块内部使用.

这个思路可以运用到其他很多地方. 希望大家能多多提供应用实践. 呵呵 

JAVAssist---动态修改注解

先来看看我们需要修改注解的代码: [java] view plain copy  print? /**   * EntityManager的实例化  ...
  • wangjingboke
  • wangjingboke
  • 2017年05月16日 14:59
  • 786

利用Java反射机制和Javassist实现Java对象及其属性的动态创建生成

利用Java反射机制和Javassist实现Java对象及其属性的动态创建生成   在开发过程中经常会遇到java对象的属性特征不确定的情况,比如属性的名称,属性的类型,属性的取值等不确定的情况,...
  • u012160689
  • u012160689
  • 2013年11月11日 16:42
  • 9878

构造方法(java中跟类名一样的方法名的作用)

在Java中,任何变量在被使用前都必须先设置初值.Java提供了为类的成员变量赋初值的专门功能:构造方法(constructor)构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:  1.构...
  • Linwood_Man
  • Linwood_Man
  • 2017年03月05日 19:41
  • 551

java通过反射+javassist获得方法所有信息(返回值、方法名、参数类型列表、参数列表)

众所周知,使用java的反射无法获得方法参数名列表,只能获得方法参数类型列表,在网上研究了一下,发现有下面两种方式实现: 方案一:使用反射+javassit库static void javassis...
  • liuxiao723846
  • liuxiao723846
  • 2015年08月03日 11:36
  • 2871

Java动态编程之javassist

概述  Javassist是一款字节码编辑工具,可以直接编辑和生成Java生成的字节码,以达到对.class文件进行动态修改的效果。熟练使用这套工具,可以让Java编程更接近与动态语言编程。教程mav...
  • FX_SKY
  • FX_SKY
  • 2016年06月19日 00:32
  • 2054

Javassist操作方法总结

参考手册: 1、读取和输出字节码 ClassPool pool = ClassPool.getDefault(); //会从classpath中查询该类 CtClass cc = pool.g...
  • u011425751
  • u011425751
  • 2016年07月15日 15:03
  • 4076

使用javassist动态注入代码

关于java字节码的处理,目前有很多工具,如bcel,asm。不过这些都需要直接跟虚拟机指令打交道。如果你不想了解虚拟机指令,可以采用javassist。javassist是jboss的一个子项目,其...
  • asmcvc
  • asmcvc
  • 2014年09月04日 16:58
  • 2688

Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

class文件简介及加载      Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机...
  • skiof007
  • skiof007
  • 2016年10月13日 14:31
  • 1871

javassist使用中遇到的问题记录

Javassit提供了运行时操作Java字节码的方法,其效率低于asm。javassist主要是提供了代码级别的修改(也有bytecode级别),相比与asm的字节码级别的修改,学习成本低,开发效率高...
  • youaremoon
  • youaremoon
  • 2016年03月01日 11:07
  • 1904

使用javassist代替反射完成类属性操作工具类

package com.ylink.ncpc.common.util; import java.lang.reflect.Field; import java.lang.reflect.Metho...
  • bb188641864
  • bb188641864
  • 2015年10月27日 17:57
  • 1044
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态构造 Java 类的一种方法: javassist (3)
举报原因:
原因补充:

(最多只允许输入30个字)