import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
* Created by Administrator on 2014-05-14.
*/
public class AutoBean{
public static void main(String[] args) throws JAXBException {
JAXBContext jaxbContext =JAXBContext.newInstance(SimpleObject.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING,"utf-8");//编码格式
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);//是否省略xml头信息(<?xml version="1.0" encoding="utf-8" standalone="yes"?>)
SimpleObject people = new SimpleObject();
marshaller.marshal(people, System.out);
}
}
@XmlRootElement
class SimpleObject{
// @XmlElement
public String publicS="publicS";
// @XmlElement
protected String protectedS="protectedS";
@XmlElement
String defaultS="defaultS";
// @XmlElement
private String privateS="privateS";
// public String getPublicS() {
// System.out.println("getPublicS");
// return publicS;
// }
//
// public void setPublicS(String publicS) {
// System.out.println("setPublicS");
// this.publicS = publicS;
// }
// public String getProtectedS() {
// System.out.println("getProtectedS");
// return protectedS;
// }
//
// public void setProtectedS(String protectedS) {
// System.out.println("setProtectedS");
// this.protectedS = protectedS;
// }
//
// public String getDefaultS() {
// System.out.println("getDefaultS");
// return defaultS;
// }
//
// public void setDefaultS(String defaultS) {
// System.out.println("setDefaultS");
// this.defaultS = defaultS;
// }
//
public String getPrivateS() {
System.out.println("getPrivateS");
return privateS;
}
public void setPrivateS(String privateS) {
System.out.println("setPrivateS");
this.privateS = privateS;
}
}
按照上面的代码,进行不同的注释可以发现
如果一个属性书public,则会进入xml文件,其他不会
如果一个属性加有@XmlElement标记,则会进入xml文件,即使是private
如果有getter,则getter会被调用(会被调用三次?!!!)
如果通过属性和getter都可以访问则会报错,这么说来对于pojo可以直接用,无需加上注释