[RESTful Webservices] DataBinding 대상이 되는 VO 내의 특정 속성을 Binding 대상에서 제외시키기
Submitted by soyon.lim on 금, 03/26/2010 - 10:42
특정 VO를 Binding하려는 경우 대상이 되는 VO에 대해 Annotation을 추가 정의하면 이에 대한 처리가 가능한 것으로 생각됩니다.
다음 예에서와 같이 이를 위해 DataBinding 대상이 되는 Movie 클래스의 상단에 @XmlAccessorType(XmlAccessType.FILED)와 같이 추가 정의하고, Binding 대상에서 제외하고자 하는 field에 대해 @XmlTransient 정의를 추가해 보았습니다..
@XmlRootElement(name = "movie")
@XmlAccessorType(XmlAccessType.FIELD)
public class Movie extends BaseObject implements java.io.Serializable {
private String movieId;
private Country country;
@XmlTransient
private String title;
@XmlTransient
private String director;
@XmlTransient
private Date releaseDate;
@XmlTransient
private Integer rank;
private Set categories = new HashSet(0);
// ...
}
이와 같이 정의하고 저희 매뉴얼에서 제공하는 RESTful Webservices example을 수행한 결과 Outbound Message가 다음과 같이 출력된 것을 확인하였습니다.
Payload: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <movies> <movie><movieId>sdfs</movieId></movie> <movie><movieId>MV-00009</movieId></movie> .... </movies>
위 예제는 다음을 참고하여 작성되었습니다.
* 참고 : http://fl-hotel-orlando.technology-related.com/javaee/5/docs/api/javax/x... @XmlAccessorType - Used by XmlAccessorType to control serialization of fields or properties. XmlAccessType.FIELD - Every non static, non transient field in a JAXB-bound class will be automatically bound to XML, unless annotated by XmlTransient.
참고 문서에 의하면 @XmlAccessorType을 정의하고 value를 XmlAccessorType.FIELD로 정의한 경우 @XmlTransient로 정의된 field를 제외하고 JAXB를 통해 Binding된다라고 언급되어 있습니다.

