Commons-BeanUtils动态bean在项目中的应用
2011-09-13 22:30
387 查看
公司在做一个中型的网站,常常会用到动态bean动态添加属性,或者拷贝页面中只需要用到的某些属性。因此,将自己在做项目过程中的一些心得体会展现出来,如果有说错的地方,还望大家批评指正。
在讲动态bean之前,不得不提一下DTO:Data Transfer Object(数据传输对象)
DTO主要用于远程调用等需要大量传输对象的地方。假如某一张表里面有几十个甚至一百个字段,但是我们的 界面上只要显示十个字段。这时,客户端用Web Service来获取数据时,没有必要把整个PO对象传给客户端,我们需要的是只将这十个属性的DTO来传递结果给客户端,这样,到达客户端以后,如果用这个对象来对应界面的显示,那此时就转换为VO了。
回到正题,接下来就是动态bean的应用了。假设现在有一张相册表ALBUM,里面有二十几个字段,对应的DTO为AlbumInfoDTO。则DTO里面就对应包含这二十几个属性。而我们界面上只需要其中的8个属性。此时,就会用到动态bean了。我们都知道,一个项目里面,像这种类似的情况还有很多。所以,我们有必要写一个公用类。
示例代码如下:
而一般类似这种项目中,service层一般都会有一个对应的转换类,比如PO与DTO的相互转换,PO集合转换为DTO集合等。所以,我们不妨将创建动态bean的方法写在该转换类中。
以相册为例:(只将界面上需要用到的8个属性拷贝出来)
写好之后,只需在对应service的实现类或action层里面调用其方法就可以了。
在讲动态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层里面调用其方法就可以了。
相关文章推荐
- Apache Commons Beanutils 二 (动态Bean - DynaBeans)
- 开发javaEE项目时出现java.lang.NoClassDefFoundError: org/apache/commons/beanutils/Converter的错误
- 《精通Spring4.X企业应用开发实战》读后感第五章(通过编码方式动态添加Bean)
- java : commons-beanutils DynaBean
- 自己定个一个小项目,探究web应用期间,动态编译java脚本的影响
- 使用ReportViewer生成动态报告--项目应用心得(一)
- 使用ReportViewer生成动态报告--项目应用心得(二)
- 从零开始学JDBC--1.16 BeanUtils组件在Web项目中的应用
- Caused by: java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean
- 开源项目应用学习之Apache-commons-io
- java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean
- 动态规划及其在Apollo项目Planning模块的应用
- 使用ReportViewer生成动态报告--项目应用心得(二)
- BeanUtils应用,tojavabean
- Flex动态获取应用部署的项目名称和地址栏的URL
- 简单的javaBean综合应用项目实践
- VerifyError: org/apache/commons/beanutils/PropertyUtilsBean
- Jakarta Commons BeanUtils 拷贝bean属性
- 【commons】Bean工具类——commons-beanutils之BeanUtils
- 初用org.apache.commons.beanutils.DynaBean