둘러보기 생략.
 

[RESTful Webservices] DataBinding 대상이 되는 VO 내의 특정 속성을 Binding 대상에서 제외시키기

특정 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된다라고 언급되어 있습니다.