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

原创 2007年09月21日 16:51:00

http://blog.csdn.net/loveyly/archive/2007/09/21/1794927.aspx 第一部分

接下来,我来举一个例子. 我们经常使用 Java Bean 来装载业务对象数据, 但是这里有一个需求就是, 对于不同的应用场景, 可能某个业务对象所包含的属性不一样, 也就是 Java Bean 中的 Property 可能不确定, 可能增加, 也可能删除一个或者多个属性. 如果开发人员自己开发这个 Java Bean 可能是无法满足这个需求了. 这里通过javassist 来动态生成 Java Bean 对象, 就是一个比较好的方法.

这里需要强调几点: 1. 我们需要确保 ClassLoader 装载所有的动态生成类时, 也可以访问普通的途径的 Java 类; 2. 因为涉及到新的Class取代旧的Claas, 需要及时通过释放 CtClass 来确保不因为其缓存导致内存不段被无限制的使用; 3. 这里动态生成 Java Bean 主要是针对动态属性的支持, 那么这就需要应用是在这样的场景下使用此特性的: 对象属性更新不是很频繁(一般也不会). 不然就会有性能问题.

这里一般会有一个业务对象模块, 对象的生成都是在该模块内部进行的, 所有使用该模块获取的对象, 都已经是一个普通的 Java Bean 对象了.

通过这个方法, 可以让业务开发人员只关心业务对象定义, 具体的 Java 类就有系统自动生成, 既灵活又方便. 

字节码操作_javassist库_动态创建新类_属性_方法_构造器_API详解JAVA216-217

字节码操作_javassist库_动态创建新类_属性_方法_构造器_API详解JAVA216-217
  • u013292493
  • u013292493
  • 2016年04月02日 23:57
  • 2065

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

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

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

http://labs.jboss.com/javassist/ 这个Jboss 的项目可以动态的构造 Java 类, 其功能算是比较强大的了. 但是任何强大的东东都是双刃剑, 那就如果很好的运用, ...
  • loveyly
  • loveyly
  • 2007年09月21日 16:35
  • 3509

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

http://blog.csdn.net/loveyly/archive/2007/09/21/1794927.aspx 第一部分http://blog.csdn.net/loveyly/archiv...
  • loveyly
  • loveyly
  • 2007年09月25日 12:15
  • 1677

Java Instrument动态修改字节码入门-添加方法耗时监控

平常在统计方法执行的耗时时长时,一般都是在方法的开头和结尾通过System.currentTimeMillis()拿到时间,然后做差值,计算耗时,这样不得不在每个方法中都重复这样的操作,现在使用Ins...
  • tterminator
  • tterminator
  • 2017年01月12日 20:48
  • 2441

java 使用javassist 动态修改注解的值

如下实例: @Test public void aetTestCaseAtrributes() throws NotFoundException { ClassPool pool = C...
  • wangxin1982314
  • wangxin1982314
  • 2017年02月23日 19:29
  • 2293

java 利用Constructor动态创建构造函数带有参数的类

package first;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetExceptio...
  • alusc
  • alusc
  • 2009年08月14日 09:06
  • 3232

如何在SpringMVC框架中利用Java反射机制和Javassist实现Java对象、属性、注解的动态创建生成

简单介绍Java的反射原理Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。Java程序要能够运行,java虚拟机需要事先加载java类,目前我们的程序在编译期就已经确定哪些ja...
  • qq_27954949
  • qq_27954949
  • 2016年12月23日 13:25
  • 523

Java 反射:Class类,动态加载类获取方法和成员变量构造信息,方法反射的基本操作,集合泛型的本质

概述 1.Class类   1) 在面向对象的世界里,万事万物皆对象。(java语言中,静态的成员、普通数据类型除外)            类是不是对象呢?类是(哪个类的对象呢?)谁的对象呢? ...
  • u014136472
  • u014136472
  • 2015年08月23日 09:55
  • 1178

Java学习之动态编译--字节码操作--javassist类库

一、字节码操作 Java动态性的两种常见实现方式: 字节码操作 反射 运行时操作字节码可以让我妈实现如下功能: 动态生成新的类 动态改变某个类的结构(添加/删除/修改 新的属性/方法) 优势: 比反射...
  • haitaofeiyang
  • haitaofeiyang
  • 2015年03月14日 22:57
  • 5567
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态构造 Java 类的一种方法: javassist (2)
举报原因:
原因补充:

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