38.5. 고정 값 속성 매핑 사용자 정의
38.5.1. 개요
기본적으로 코드 생성기는 고정 값을 일반 속성에 갖는 것으로 정의된 속성을 매핑합니다. 스키마 검증을 사용하는 경우 Apache CXF는 스키마 정의를 적용할 수 있습니다( 24.3.4.7절. “스키마 유효성 검사 유형 값”참조). 그러나 스키마 유효성 검사를 사용하면 메시지 처리 시간이 증가합니다.
고정 값이 있는 속성을 Java에 매핑하는 또 다른 방법은 Java 상수에 매핑하는 것입니다. 전역Bindings 사용자 지정 요소를 사용하여 코드 생성기에 고정 값 특성을 Java 상수에 매핑하도록 지시할 수 있습니다. 속성 요소를 사용하여 보다 지역화된 수준에서 Java 상수에 고정 값 특성의 매핑을 사용자 지정할 수도 있습니다.
38.5.2. 글로벌 사용자 정의
globalBinding 요소의 fixedAttributeAsConstantProperty 특성을 추가하여 이 동작을 변경할 수 있습니다. 이 속성을 true 로 설정하면 고정 특성을 사용하여 정의된 모든 속성을 Java 상수에 매핑하도록 코드 생성기가 지시합니다.
예 38.21. “Constants 강제 생성을 위한 인라인 사용자 지정” 코드 생성기가 고정된 값이 있는 속성에 대한 상수를 생성하도록 하는 인라인 사용자 지정이 표시됩니다.
예 38.21. Constants 강제 생성을 위한 인라인 사용자 지정
<schema targetNamespace="http://widget.com/types/widgetTypes"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.0">
<annotation>
<appinfo>
<jaxb:globalBindings fixedAttributeAsConstantProperty="true" />
</appinfo>
</annotation>
...
</schema>예 38.22. “강제 발생을 위한 파일 바인딩” 고정 속성 생성을 사용자 지정하는 외부 바인딩 파일을 표시합니다.
예 38.22. 강제 발생을 위한 파일 바인딩
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
jaxb:version="2.0">
<jaxb:bindings schemaLocation="types.xsd">
<jaxb:globalBindings fixedAttributeAsConstantProperty="true" />
<jaxb:bindings>
<jaxb:bindings>38.5.3. 로컬 매핑
속성 요소의 fixedAttributeAsConstantProperty 특성을 사용하여 속성 별로 특성 매핑을 사용자 지정할 수 있습니다. 이 속성을 true 로 설정하면 고정 특성을 사용하여 정의된 모든 속성을 Java 상수에 매핑하도록 코드 생성기가 지시합니다.
예 38.23. “Constants 강제 생성을 위한 인라인 사용자 지정” 코드 생성기가 고정된 값을 사용하여 단일 속성에 대한 상수를 생성하도록 하는 인라인 사용자 지정이 표시됩니다.
예 38.23. Constants 강제 생성을 위한 인라인 사용자 지정
<schema targetNamespace="http://widget.com/types/widgetTypes"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.0">
<complexType name="widgetAttr">
<sequence>
...
</sequence>
<attribute name="fixer" type="xsd:int" fixed="7">
<annotation> <appinfo> <jaxb:property fixedAttributeAsConstantProperty="true" /> </appinfo> </annotation>
</attribute>
</complexType>
...
</schema>예 38.24. “강제 발생을 위한 파일 바인딩” 고정 특성 생성을 사용자 지정하는 외부 바인딩 파일을 표시합니다.
예 38.24. 강제 발생을 위한 파일 바인딩
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
jaxb:version="2.0">
<jaxb:bindings schemaLocation="types.xsd">
<jaxb:bindings node="xsd:complexType[@name='widgetAttr']">
<jaxb:bindings node="xsd:attribute[@name='fixer']">
<jaxb:property fixedAttributeAsConstantProperty="true" />
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
<jaxb:bindings>38.5.4. Java 매핑
기본 매핑에서 모든 속성은 getter 및 setter 메서드를 사용하여 표준 Java 속성에 매핑됩니다. 이 사용자 지정이 고정 특성을 사용하여 정의된 속성에 적용되면 예 38.25. “고정 값 특성을 Java Constant에 매핑” 에 표시된 대로 속성이 Java 상수에 매핑됩니다.
예 38.25. 고정 값 특성을 Java Constant에 매핑
@XmlAttribute public final static type NAME = value;
유형은 34.1절. “기본 유형” 에 설명된 매핑을 사용하여 특성의 기본 유형을 Java 유형에 매핑하여 결정됩니다.
NAME 은 특성 요소의 값을 모든 대문자로 변환하여 결정됩니다.
name 특성
값은 특성 요소의 값에 따라 결정됩니다.
고정 특성
예를 들어 예 38.23. “Constants 강제 생성을 위한 인라인 사용자 지정” 에 정의된 속성은 예 38.26. “Java Constant에 매핑되는 고정 값 속성” 에 표시된 대로 매핑됩니다.
예 38.26. Java Constant에 매핑되는 고정 값 속성
@XmlRootElement(name = "widgetAttr")
public class WidgetAttr {
...
@XmlAttribute
public final static int FIXER = 7;
...
}