昨天抽時間閱讀Spring原始碼,先從spring 4.x的core包開始吧,除了core和util裡,首當其衝的就是asm和cglib。
要實現兩個類例項之間的欄位的複製功能:
多年之前用C#,因為閱讀原始碼少,專案也比較小,自己使用反射機制就封裝一個類似的方法來完成了(反正微軟有錢有時間)。
前一段用Java,因為沒系統讀過Spring的原始碼,不知道有BeanUtils裡的copy方法。
同事甲,用到了BeanUtils裡的copy方法,他說也是見到他的同事這麼用。
同事乙,和我當年用C#實現似的,重複造輪子(也算鍛鍊自己的編碼能力了)。
我就自己抽取一個copy方法,採用正規表示式批量生成了非反射方式的set/get(這樣效率也還高些,以後方法內部也能重構)。
看了幾篇比較好的文章:
http://blog.csdn.net/jianhua0902/article/details/8155368
文章從程式設計需求出發,來龍去脈很清楚。
http://www.jianshu.com/p/f8b892e08d26
死摳 CGLIB中BeanCopier原始碼實現
https://yq.aliyun.com/articles/14528
雲棲社群:cglib原始碼學習交流
http://www.cnblogs.com/bjzhanghao/archive/2004/07/30/28607.html#3683984
java老司機寫的。
http://www.cnblogs.com/softidea/p/5608962.html
http://blog.csdn.net/fenglibing/article/details/7080340
https://www.ibm.com/developerworks/cn/java/j-lo-asm30/index.html
IBM社群,很早的技術文章。