jaxb 생성 클래스를 래핑하는 것에 대한 질문이 있으며 입력 내용을 듣고 싶습니다.내 JAXB 객체 래퍼를 비평합니다.
public class ComplexService{
ComplexObject1 object1;
ComplexObject2 object2;
...
ComplexObject10 object10;
public static class ComplexObject1{
//Accessors and mutators on ComplexObject1
}
public static class ComplexObject2{
//Accessors and mutators on ComplexObject1
}
...
public static class ComplexObject10{
//Accessors and mutators on ComplexObject1
}
}
지금은을 만들려면 :
<ComplexService>
<ComplexObject1>
<Element1></Element1>
<Parameter></Parameter>
</ComplexObject1>
<ComplexObject2>
<Element2> </Element2>
<Parameter> </Parameter>
</ComplexObject2>
...
<ComplexObject10>
<Element10> </Element10>
<Parameter> </Parameter>
</ComplexObjec10>
xjc를 통해 위의 XSD를 실행 한 후 생성 된 클래스 A 비트 다음과 같습니다
내 XSD는 비트처럼 보인다 ComplexService 클래스뿐만 아니라 이러한 CompleObjects를 감싸는 래퍼.
위의 방법은 클래스를 포장 할 수있는 좋은 방법이 될 것이다 :
public class WrappedComplexObject1{ private final ComplexObject1; public WrappedComplexObject1(){ complexObject1 = new ComplexObject1(); } //Delegate calls to the underlying ComplexObject1 public String getServiceName(){ return complexObject1.getServiceName(); } }
내 질문이 있습니까? 내 목표는 xjc에 의해 만들어진 기본 클래스를 망치지 않는 것이다. 더 나은 api (클래스 이름과 메소드 이름)를 제공합니다.
또한이 개체의 데이터의 유효성을 검사하려고합니다. 따라서 나는 WrappedComplexObject1을 더 감싸기 위해 데코레이터 패턴을 사용할 생각이다. 이것이 권장 접근 방법일까요?
마지막으로 xsd에는 "Parameter"요소가 구조적으로 동일합니다 (하나의 값 필드 만 포함). 그러나 xjc가 ComplexService 클래스를 만들 때 모든 ComplexObject에 대해 새 Parameter 클래스가 만들어졌습니다.
"매개 변수"에 대해 하나의 래퍼 클래스를 사용하는 것에 대해 걱정해야합니까, 아니면 단순히 ComplexObject 당 하나의 매개 변수 래퍼 클래스를 만들어야합니까?
모든 제안, 아이디어, 코드 샘플이 가장 유용 할 것입니다.
감사
더 응답이 없었다 볼 수 있습니다, 그래서 내 방법은 "선호"방법입니다 만약 내가 확실치 아니라
저는이 질문에 매우 흥미가 있습니다. 너 어디서 났어? – Martin
답변은 아래와 같습니다. – CaptainHastings