动态Bean在生产中带来的生产率

在以往的开发中,我们都是以面向对象的方式来进行软件开发,特别是javabean,我们通长都是根据表结构在开发前就编写完的类,这些类一旦表结构改变,就要重新修改,而且是代码的联动修改,往往修改一个字段都会带来很大一部分的工作量,对一个较大的程序的修改会造成了很大的压力,因为项目的开发周期往往都比较紧迫,所以,针对这种改动比较频繁的功能,尽量将代码灵活化,那么,如何让代码灵活呢?我原来的思路是动态修改现有的javabean对象,但是我发现实现起来难度大,效率低,而且修改后需要重新编译,问题好多,所以没有可行性。那么换一种方式,那就是通过Apache提供的BeanUtils来进行实现,BeanUtils提供了“动态类”的相关实现方式,可以满足我们的需求,具体应用如下.

import java.util.HashMap;

import org.apache.commons.beanutils.BasicDynaClass;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.DynaProperty;

public class ByBeanDemo {

	public static void main(String[] args) throws IllegalAccessException,
			InstantiationException {
		DynaProperty[] props = new DynaProperty[] {
				new DynaProperty("address", java.util.Map.class),
				new DynaProperty("subordinate", String.class),
				new DynaProperty("firstName", String.class),
				new DynaProperty("lastName", String.class) };
		BasicDynaClass dynaClass = new BasicDynaClass("employee", null, props);
		DynaBean employee = dynaClass.newInstance();
		employee.set("address", new HashMap());
		employee.set("subordinate", "dsada");
		employee.set("firstName", "Fred");
		employee.set("lastName", "Flintstone");
		System.out.println(employee.get("firstName"));
	}

}

通过以上代码实现,相信大家已经能够理解动态类对我们实际的生产所带来的效率又多高了,他通过反射来实现,性能影响不大,对数据量要求不高的应用完全可以适用,通过BeanUtils可以解决实际中的大部分问题,如果有需要的可以拿走,如果有不足的还希望高人能够给予指点。

时间: 2024-10-30 03:37:27

动态Bean在生产中带来的生产率的相关文章

Apache Commons Beanutils 二 (动态Bean - DynaBeans)

相关背景 上一篇介绍了PropertyUtils的用法,PropertyUtils主要是在不修改bean结构的前提下,动态访问bean的属性: 但是有时候,我们会经常希望能够在不定义一个Java类的前提下,动态决定这个类中包含哪些属性,并动态访问它们的属性值,比较典型的使用场景是作为SQL查询的结果集的bean: 为了支持以上特性,Apache Commons Beanutils包为我们提供了DynaBean接口.DynaClass接口: 举个简单例子如下: DynaProperty[] pro

Flink CheckPoint奇技淫巧 | 原理和在生产中的应用

简介 Flink本身为了保证其高可用的特性,以及保证作用的Exactly Once的快速恢复,进而提供了一套强大的Checkpoint机制. Checkpoint机制是Flink可靠性的基石,可以保证Flink集群在某个算子因为某些原因(如异常退出)出现故障时,能够将整个应用流图的状态恢复到故障之前的某一状态,保 证应用流图状态的一致性.Flink的Checkpoint机制原理来自"Chandy-Lamport algorithm"算法 (分布式快照算法). Checkpoint的执行

在生产中我们需要考虑的一些服务器硬件设备选择

1:CPU 双四核 2:内存 ,4GB以上 ,文件服务器 1GB足够 3:硬盘存储系统 缓存服务器 squid memcached warnish  RAID0 nginx+php5 或tomcat resin 等应用 RAID1 如果是内网开放服务器或存放重要代码的服务器 RAID5 运行mysql或oracle等数据库应用,可以考虑用固态硬盘做成RAID5或RAID10 4:网卡 一个对内网,一个对外网 5:备份 rsync和scp一些linux备份工具特别占用带宽 scp 用它的限速参数

Linux磁盘管理在生产中需要注意的

备份分区表 分区表非常重要,建议在生产环境中将分区表备份 先来查看一下我们要备份的分区表hexdump -C /dev/sda -n 512 我们只备份前512个字节 备份分区表  dd if=/dev/sda of=/data/mbr_bak bs=1 count=512  将sda的分区表备份到/data/的mbr_bak 备份文件不能保存在本机,因为分区表破坏了机器就起不来了,备份文件在本机就恢复不了了. 所以分区表备份文件应该存在一个相对比较安全的地方,在这我们把备份文件复制到cento

Java动态代理与Cglib库

JDK动态代理 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务.  按照代理的创建时期,代理类可以分为两种.  静态代理:由程序员创建或特定工具自动生成源代码,再对其编译.在程序运行前,代理类的.class文件就已经存在了. 

产品三俗:瀑布流、动态流、奖章

有三种流行的产品要素“瀑布流.动态流.奖章”,我称之为产品三俗,容易因其流行而被滥用.PM选择它们有可能是因为“时髦”“标配”“别人都在用”,这很糟糕.恰好动态流和奖章我都折腾过,多多少少吃过一点亏,总结如下.云鼎娱乐城 瀑布流 瀑布流的鼻祖是Pinterest,Pinterest的用户97.9%是女性.有种说法是,洋妞们从小就有收集剪报的习惯,Pinterest将这个习惯移植到了网络上,故快速引爆流行.听上去挺有道理. 从交互角度来分析,瀑布流最大的好处有两个,第一是提高了“发现好图”的效率,

美团Android DEX自动拆包及动态加载简介

最近也遇到了方法数超过65K的问题,最终通过MultiDex的方法解决了,感觉还比较简单,就是改了gradle文件,不知道美团为什么弄这么复杂的方案 原文http://tech.meituan.com/mt-android-auto-split-dex.html 概述 作为一个android开发者,在开发应用时,随着业务规模发展到一定程度,不断地加入新功能.添加新的类库,代码在急剧的膨胀,相应的apk包的大小也急剧增加, 那么终有一天,你会不幸遇到这个错误: 生成的apk在android 2.3

JDK动态代理与Cglib库

JDK动态代理 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务.  按照代理的创建时期,代理类可以分为两种.  静态代理:由程序员创建或特定工具自动生成源代码,再对其编译.在程序运行前,代理类的.class文件就已经存在了. 

细说java系统之动态代理

代理模式 在深入学习动态代理之前,需要先掌握代理模式.只有深刻理解了代理模式的应用,才能充分理解Java动态代理带来的便利. 在生活中存在许多使用"代理模式"的场景,比如:村里的张三今年已经30岁了,但是还没结婚,可把他老妈给愁坏了,于是就拜托村东头的王媒婆给儿子找个媳妇. 在这里,要娶媳妇的人是张三,但是他不能直接跑到女方家把人家闺女直接带回来,需要中间人王媒婆上门说媒,在这里王媒婆就是一个代理. 另外,我们上大学的时候都知道,学校的机房都是通过一个代理服务器上网的,因为只有一个外网