Commons-BeanUtils动态bean在项目中的应用

   公司在做一个中型的网站,常常会用到动态bean动态添加属性,或者拷贝页面中只需要用到的某些属性。因 此,将自己在做项目过程中的一些心得体会展现出来,如果有说错的地方,还望大家批评指正。 

   在讲动态bean之前,不得不提一下DTO:Data Transfer Object(数据传输对象)

   DTO主要用于远程调用等需要大量传输对象的地方。假如某一张表里面有几十个甚至一百个字段,但是我们的 界面上只要显示十个字段。这时,客户端用Web Service来获取数据时,没有必要把整个PO对象传给客户端,我们需要的是只将这十个属性的DTO来传递结果给客户端,这样,到达客户端以后,如果用这个对象来对应界面的显示,那此时就转换为VO了。

  回到正题,接下来就是动态bean的应用了。假设现在有一张相册表ALBUM,里面有二十几个字段,对应的DTO为AlbumInfoDTO。则DTO里面就对应包含这二十几个属性。而我们界面上只需要其中的8个属性。此时,就会用到动态bean了。我们都知道,一个项目里面,像这种类似的情况还有很多。所以,我们有必要写一个公用类。

示例代码如下:

public static DynaBean createDynaBean(DynaProperty[] properties,
			String className) throws Exception {
		// 使用动态Bean的属性定义类
		DynaClass beanClass = new BasicDynaClass(className, null, properties);
		// 根据类,创建一个新的实例
		DynaBean bean = beanClass.newInstance();

		return bean;
	}

  而一般类似这种项目中,service层一般都会有一个对应的转换类,比如PO与DTO的相互转换,PO集合转换为DTO集合等。所以,我们不妨将创建动态bean的方法写在该转换类中。

以相册为例:(只将界面上需要用到的8个属性拷贝出来)

public static DynaBean getShowAlbumsInfoDynaBean(AlbumInfoDTO infoDTO)
			throws Exception {
		// 创建动态Bean属性
		DynaProperty[] properties = new DynaProperty[] {
				new DynaProperty("albumId", String.class),
				new DynaProperty("name", String.class),
				new DynaProperty("description", String.class),
				new DynaProperty("topPhotoId", String.class),
				new DynaProperty("url", String.class),
				new DynaProperty("enableFor", String.class),
				new DynaProperty("createTime", Date.class),
				new DynaProperty("modifyTime", Date.class) };
		DynaBean dynaBean = DynaBeanHelper.createDynaBean(properties, "album");

		// 使用PropertyUtils工具类拷贝Bean属性
		PropertyUtils.copyProperties(dynaBean, infoDTO);
		return dynaBean;
	}

写好之后,只需在对应service的实现类或action层里面调用其方法就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值