最近在看開(kāi)源中國(guó)的app源碼,里面用到了一個(gè)我之前沒(méi)用到過(guò)的第三方庫(kù)XStream,借此寫(xiě)下自己的使用心得。
XStream簡(jiǎn)介
-
使用限制:
JDK版本不能小于1.5. 雖然預(yù)處理注解是安全的,但自動(dòng)偵查注解可能發(fā)生競(jìng)爭(zhēng)條件. -
特點(diǎn):
簡(jiǎn)化的API; 無(wú)映射文件; 高性能,低內(nèi)存占用; 整潔的XML; 不需要修改對(duì)象;支持內(nèi)部私有字段,不需要setter/getter方法,final字段;非公有類(lèi),內(nèi)部類(lèi);類(lèi)不需要默認(rèn)構(gòu)造器,完全對(duì)象圖支持.維護(hù)對(duì)象引用計(jì)數(shù),循環(huán)引用. i 提供序列化接口; 自定義轉(zhuǎn)換類(lèi)型策略; 詳細(xì)的錯(cuò)誤診斷; 快速輸出格式;當(dāng)前支持 JSON 和 morphing.
使用場(chǎng)景 Transport 轉(zhuǎn)換 Persistence 持久化對(duì)象 Configuration 配置 Unit Tests 單元測(cè)
隱式集合 當(dāng)我們使用集合類(lèi)時(shí)不想顯示集合,只顯示里面的元素即可.
使用隱式集合前: <list> <element /> <element /> <list>
使用隱式集合: xstream.addImplicitCollection(Person.class, "list");
使用隱式集合后: <element /> <element />
Xstream注解常用知識(shí):
@XStreamAlias("message") 別名注解 作用目標(biāo): 類(lèi),字段 '
@XStreamImplicit 隱式集合 @XStreamImplicit(itemFieldName="part") 作用目標(biāo): 集合字段
@XStreamConverter(SingleValueCalendarConverter.class) 注入轉(zhuǎn)換器 作用目標(biāo): 對(duì)象
@XStreamAsAttribute 轉(zhuǎn)換成屬性 作用目標(biāo): 字段
@XStreamOmitField 忽略字段 作用目標(biāo): 字段
Auto-detect Annotations 自動(dòng)偵查注解 xstream.autodetectAnnotations(true);
自動(dòng)偵查注解與XStream.processAnnotations(Class[] cls)的區(qū)別在于性能.
自動(dòng)偵查注解將緩存所有類(lèi)的類(lèi)型.
案例分析:
- 同一標(biāo)簽下多個(gè)同名元素;
- 同一標(biāo)簽下循環(huán)多個(gè)對(duì)象;