关于beancopier的一些思考-java开发java经验技巧

关于beancopier的一些思考-java开发java经验技巧

ID:28390013

大小:82.00 KB

页数:4页

时间:2018-12-09

关于beancopier的一些思考-java开发java经验技巧_第1页
关于beancopier的一些思考-java开发java经验技巧_第2页
关于beancopier的一些思考-java开发java经验技巧_第3页
关于beancopier的一些思考-java开发java经验技巧_第4页
资源描述:

《关于beancopier的一些思考-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、关于BcanCopicr的一些思考-编程开发技术关于BeanCopier的一些思考原文出处:黄亿华在做业务的时候,我们冇时为了隔离变化,会将DAO查询出來的Entity,和对外提供的DTO隔离开來。大概90%的时候,它们的结构都是类似的,但是我们很不喜欢写很多兀长的b.setFl(a.getFlO)这样的代码,丁•是我们需要BeanCopier来帮助我们。在做业务的时候,我们有时为了隔离变化,会将DAO查询岀来的Entity,和对外提供的DTO隔离开來。大概90%的时候,它们的结构都是类似的,但是我们很不喜欢写很多冗长的b.sctFl(a

2、.gctFl())这样的代码,于是我们需要BeanCopier来帮助我们。BeanCopier其实已经有很多开源版本,例DozerMapper>ApacheBeanUtils>Spring、JoddBeanUtils甚至是Cglib都提供了这样的功能。在比较这些工具之前,我想先提提我对BeanCopier的一些要求。1.性能BeanCopier是一个很常用的操作,如果是一个批量的请求,就更加明显了。使用效率太低的库不太划算,我对这些工具做了一个对比:Copy-个简单Bean1,000,000次,计算总耗时(测试代码在这里)。比较结果如下:

3、1,000,000roundjdkset/gettakes17mscglibtakes117msjoddtakes5309msdozermappertakes2336msapchcboanutiIstakes6264ms其屮jdk的直接写set/get是最快的,所以在性能要求高的场景下倒是不妨自己写。另外这样写也是对重构比较友好,这是其他儿个工具都做不到的。其次是用了字节码生成的cglib,然后将其他的库远远甩在后面。其他的库性能相差不大,大约1000次拷贝会消耗数毫秒时间,对于性能皱感的应用,特别是一些批量请求,消耗述是比较大的。2.内

4、聚性其实BeanCopy可以扩展到更一般的情况:我们需耍对两个类似的Bean做转换,输入是一个Bean,输岀是另外一个类似的Bean。这种逻辑里,除了简单的字段拷贝,可能也会有一些计算逻辑,甚至还会依赖一些外部数据源,而我们还希望最好把转换的逻辑都放在一起,同吋也起到规范业务的作用。DozerMapper在这条路上走的很远。它通过XML/API/Annotation的方式,支持简单形式的转换、映射,从而更好的处理一些字段不一样的情况,用意就是-•个Mapper搞定一切。例如下面的例子,可以将不同名称的字段进行映射。

5、二〃1.0〃encoding=/zUTF-8,z?>org.dozer,vo.TcstObjcct

6、ass-a>org.dozer,vo.TestObjectPrime〈/class-b>oneonePrimeorg.dozer,vo.TestObjectFoo〈/class-a>org.dozer,vo.TcstObjcctFooPrimconeFoooneFooPrime<

7、/mapping>但是,假设我们的场景不是需要整合很多项口,而是自己制定规范和数据模型,这时我们真的需要这样的转换么?我认为一开始就应该把相同的字段给予相同的名字,这样无论是对于理解、后续维护都会方便很多。即使这种不同名的情况存在,我们也不应该捉倡。所以花这么大的力气去做字段的映射,增加了复朵度,我认为并不划算。这个时候,我们需要的是仅仅对同名字段进行拷贝,其他属性交由手动处理。至此,一个BeanCopier就大体成型了:publicclassBeanCopicr〈F,T>{privatenet.sf.cglib・b

8、eans.BeanCopierbeanCopier;protectednet.sf.cglib.beans.BeanCopiergetBeanCopier(){returnboanCopier

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。