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

来源:互联网 发布:男士双肩包品牌 知乎 编辑:程序博客网 时间:2024/05/29 19:14

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 类就有系统自动生成, 既灵活又方便. 

原创粉丝点击