动态修改字节码以替换用反射调用get set方法的形式
生活随笔
收集整理的這篇文章主要介紹了
动态修改字节码以替换用反射调用get set方法的形式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 起因
在前兩天,為了解決websphere和JDK8上部署的應(yīng)用發(fā)起webservice調(diào)用(框架用的cxf)時報錯的問題,跟了一些代碼,最終發(fā)現(xiàn)可以通過加上參數(shù)-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true來解決。
2. ClassTailor.noOptimize優(yōu)化了什么
分析jaxb的代碼分析,由于webservice調(diào)用要用到xml與bean對象的轉(zhuǎn)換,于是就是用到對bean字段的get set。通常的想法此處用反射便可以完成。但是jaxb在這里用了動態(tài)生成字節(jié)碼的方式直接調(diào)用bean的get set方法,以達(dá)到節(jié)提升性能的目的,本質(zhì)上就是換了class文件中常量池的UFT8字符串。
具體可以參見com.sun.xml.bind.v2.bytecode.ClassTailor類,com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector 類。
3. 按他的方式做一個demo
總結(jié)
以上是生活随笔為你收集整理的动态修改字节码以替换用反射调用get set方法的形式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java EE】Day08 HTML&
- 下一篇: udacity_javascript设计