1.Xstream简介;
2.Xstream注解常用知识:
@XStreamAlias("message") 别名注解 作用目标: 类,字段 @XStreamImplicit 隐式集合(例如list集合)
@XStreamImplicit(itemFieldName="part") 作用目标: 集合字段 @XStreamConverter(SingleValueCalendarConverter.class) 注入转换器 作用目标: 对象 @XStreamAsAttribute 转换成属性 作用目标: 字段 @XStreamOmitField 忽略字段 Auto-detect Annotations 自动侦查注解 xstream.autodetectAnnotations(true); 自动侦查注解与XStream.processAnnotations(Class[] cls)的区别在于性能.自动侦查注解将缓存所有类的类型. 3.案例分析: (1)同一标签下多个同名元素;
(2)同一标签下循环多个对象;
使用限制: JDK版本不能<1.5.
虽然预处理注解是安全的,但自动侦查注解可能发生竞争条件.
特点:
简化的API;
无映射文件;
高性能,低内存占用;
整洁的XML;
不需要修改对象;支持内部私有字段,不需要setter/getter方法,final字段;非公有类,内部类;类不需要默认构造器,完全对象图支持.维护对象引用计数,循环引用. i
提供序列化接口;
自定义转换类型策略;
详细的错误诊断;
快速输出格式;当前支持 JSON 和 morphing.
使用场景Transport转换
Persistence持久化对象
Configuration配置
Unit Tests单元测
隐式集合当我们使用集合类时不想显示集合,只显示里面的元素即可.
使用隐式集合前:
<list>
<element />
<list>
使用隐式集合:
xstream.addImplicitCollection(Person.class,"list");
使用隐式集合后:
<element />
2.Xstream注解常用知识:
@XStreamAlias("message") 别名注解 作用目标: 类,字段 @XStreamImplicit 隐式集合(例如list集合)
@XStreamImplicit(itemFieldName="part") 作用目标: 集合字段 @XStreamConverter(SingleValueCalendarConverter.class) 注入转换器 作用目标: 对象 @XStreamAsAttribute 转换成属性 作用目标: 字段 @XStreamOmitField 忽略字段 Auto-detect Annotations 自动侦查注解 xstream.autodetectAnnotations(true); 自动侦查注解与XStream.processAnnotations(Class[] cls)的区别在于性能.自动侦查注解将缓存所有类的类型. 3.案例分析: (1)同一标签下多个同名元素;
(2)同一标签下循环多个对象;
案例:
import
java.util.List;
com.thoughtworks.xstream.annotations.XStreamAlias;
com.thoughtworks.xstream.annotations.XStreamImplicit;
/**
*@ClassName:PersonBean
*@author: chenyoulong Email: chen.youlong@payeco.com
*@date :2012-9-28 下午3:10:47
*@Description:TODO
*/
@XStreamAlias
(
"person"
)
public
class
PersonBean {
"firstName"
private
String firstName;
"lastName"
String lastName;
"telphone"
PhoneNumber tel;
"faxphone"
PhoneNumber fax;
"friends"
Friends friend;
//测试一个标签下循环对象
"pets"
Pets pet;
//省略setter和getter
}
|
2.[代码]2.实体类:PhoneNumber
"phoneNumber"
PhoneNumber{
"code"
int
code;
"number"
String number;
3.[代码]3.实体类:Friends(一个标签下有多个同名标签 )
|