日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2014年06月30日

發布時間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2014年06月30日 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于BeanUtils.copyProperties的使用

spring和apache commons-beanutils中分別存在一個BeanUtils,提供了對java bean的常用操作。

之前在寫程序時,用到了兩個不同類型但屬性基本相同的對象的拷貝,結果在拷貝java.util.Date類型的對象屬性時,由于其值為null,而拋異常。

由于時間緊急,所以臨時改成了get/set方式,幸虧對象的屬性不算多。

后來一直耿耿于懷這個問題,今天抽空看了一下spring和apache commons-beanutils包中BeanUtils.copyProperties的實現。

spring中實現的方式很簡單,就是對兩個對象中相同名字的屬性進行簡單get/set,僅檢查屬性的可訪問性。

而commons-beanutils則施加了很多的檢驗,包括類型的轉換,甚至于還會檢驗對象所屬的類的可訪問性。

而且,commons-beanutils中的裝換是不支持java.util.Date的。除了支持基本類型以及基本類型的數組之外,還支持java.sql.Date, java.sql.Time, java.sql.TimeStamp, ?java.io.File, ?javaio.URL這些類的對象,其余一概不支持。不過你可以自定義你的類的Converter。然后注冊進去。

感覺commons-beanutils包中的這個BeanUtils類的copyProperties方法,太過復雜,約束太多,而且使用不便,雖然可擴展性好了,但是易用性不高。

總結:

關于bean復制,如果屬性較少,建議直接寫個方法完成get/set即可。如果屬性較多,可以自己采用反射實現一個滿足自己需要的工具類,或者使用spring的那個beanutils類,不建議使用commons-beanutils包中的那個BeanUtils類,剛看了下,這個類對于內部靜態類的對象復制也會出現問題,檢驗太復雜了,常會出現一些詭異的問題。畢竟我們bean復制一般就是簡單的屬性copy而已。

而且,由于這些BeanUtils類都是采用反射機制實現的,對程序的效率也會有影響。因此,慎用BeanUtils.copyProperties!!!

分類:?技術點滴 綠色通道:?好文要頂?關注我?收藏該文與我聯系? gshine
關注 - 3
粉絲 - 13 +加關注 0 0 (請您對文章做出評價) ??上一篇:Java Annotation

轉載于:https://www.cnblogs.com/wangduqiang/p/4181012.html

總結

以上是生活随笔為你收集整理的2014年06月30日的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。