32.3. Object Factory

32.3.1. 개요

JAXB는 개체 팩토리를 사용하여 JAXB 생성 생성자의 인스턴스를 인스턴스화하는 메커니즘을 제공합니다. 개체 팩토리에는 패키지의 범위에서 모든 XML 스키마 정의 구문을 인스턴스화하는 메서드가 포함됩니다. 유일한 예외는 개체 팩토리에서 생성 메서드를 가져오지 않는다는 것입니다.The only exception is that enumerations do not get a creation method in the object factory.

32.3.2. 복잡한 유형 팩토리 방법

XML 스키마 복잡한 형식을 구현하기 위해 생성된 각 Java 클래스에 대해 개체 팩토리에는 클래스 인스턴스를 만드는 메서드가 포함됩니다. 이 메서드는 다음과 같은 형식을 취합니다.This method takes the form:

typeName createtypeName();

예를 들어 스키마에 widgetType 이라는 복잡한 유형이 포함된 경우 Apache CXF는 이를 구현하기 위해 widget Type 이라는 클래스를 생성합니다. 예 32.5. “복잡한 Type Object Factory Entry” 개체 팩토리에서 생성된 생성 방법을 보여줍니다.

예 32.5. 복잡한 Type Object Factory Entry

public class ObjectFactory
{
  ...
  WidgetType createWidgetType()
  {
    return new WidgetType();
  }
  ...
}

32.3.3. 요소 팩토리 방법

스키마의 전역 범위에 선언되는 요소의 경우 Apache CXF는 개체 팩토리에 팩토리 메서드를 삽입합니다. 33장. XML Elements 사용 에서 설명한 것처럼 XML 스키마 요소는 JAXBElement<T> 오브젝트에 매핑 됩니다. 생성 방법은 다음과 같은 형식을 사용합니다.

public JAXBElement<elementType> createelementName(elementType value);

예를 들어 xsd:string주석 이라는 요소가 있는 경우 Apache CXF는 에 표시된 개체 팩토리 메서드를 생성합니다. 예 32.6. “element Object Factory Entry”

예 32.6. element Object Factory Entry

public class ObjectFactory
{
    ...
    @XmlElementDecl(namespace = "...", name = "comment")
    public JAXBElement<String> createComment(String value) {
        return new JAXBElement<String>(_Comment_QNAME, String.class, null, value);
    }
    ...
}