2009-04-21 3 views
1

나는 웹 서비스에 대한 입력과 출력 모두로 사용되는 Jibx 빈을 가지고있다. 콩은 매우 커서 부모와 자식 간의 깊은 관계가 복잡합니다. webservice는 요청 객체를 반환하지 않지만 일부 속성이 채워진 새 bean을 반환합니다. 내 요청과 응답을 병합하고 싶습니다. Dozer를 사용해 보았습니다 (단지 내 요청 객체를 응답으로 바꿉니다. 즉, 원래 요청 속성이 손실되었습니다!). 왜냐하면 BeanUtils.copyProperties도 마찬가지입니다. 개체 그래프가 너무 크고 모든 속성에서 isNull 검사를 수행 할 수 없습니다.자바에서 병합하는 콩

나는 콩을 XML로 변환하고 EL4J XML Merge 다른 제안을 사용하여 그들을 병합하는 것을 고려했다.

답변

2

"너무 크고 깊어서 isNull 검사를 수행 할 수 없습니다."나는 이러한 검사를 하드 코딩하지 않으려한다고 가정합니다. 너도 그래.

그러나 콩에 대한 아름다운 점은 검사가 가능하다는 것입니다. 자동 검사를 작성하여 객체 그래프를 통해 작업하고 null을 확인하고 그렇지 않은 경우 업데이트 할 수 있습니다.

예, CPU 사용량이 많습니다. 하지만 XML을 생성하고 병합하는 것보다 CPU 사용량이 더 많지는 않습니다.

0

오브젝트가 Bean이므로 Bean을 요청과 연관시키지 않고 Reply 할 때 요청 Bean을 사용할 수 있습니까? 나는 단지 인터페이스 객체가 될 수있는 객체를 시스템 깊숙히 밀어내는 것을지지하지 않지만 요청 빈을 유지하고 응답 빈을 만드는 것을지지한다.

심도 인수를 이해하는 것이 확실하지 않지만 입력 레이아웃에서 응답을 채우는 논리가 복잡한 경우 속성 계산 전에 응답 채우기 코드를 작성해야 할 수 있습니다. 시스템은 계산할 특성을 결정할 때 해당 특성을 응답 빈으로 다시 배치하기위한 전략을 빌드 할 수 있습니다. 이것은 전략 패턴만큼이나 단순 할 수 있으며,보다 복잡한 상황에서는 바이트 코드 수정 라이브러리를 고려해야합니다.

또 다른 방법은 인터페이스를 단순화하여 XML의 속성이 비슷하고 "심도"가 제거되도록하는 것입니다. 모든 속성을 비슷하게 설정하면 속성 검사 및 채우기를 간단한 루프로 관리 할 수 ​​있습니다.

XML로 변환하면 처음에는 프레임 워크를 사용하여 다소 객체를 무효화합니다. 아마도 XML이 더 쉬울 경우 Jibx가 문제의 가장 쉬운 솔루션은 아닙니다. 사양에서 무엇을 변경할 수 있습니까?