关闭

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

标签: javabeanclassloaderclass
2362人阅读 评论(0) 收藏 举报

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:51553次
    • 积分:926
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:0篇
    • 译文:0篇
    • 评论:19条
    文章分类
    最新评论