도구

2011-01-13 3 views
3

그것은 성찰을 사용하여 두 개의 간단한, 평면 자바 콩을 병합 쉽게 :도구

BeanInfo info = Introspector.getBeanInfo(ContactBean.class); 
    PropertyDescriptor pDescArr[] = info.getPropertyDescriptors(); 
    for(PropertyDescriptor pDesc : pDescArr){ 
     //copy properties and check for conflicts here 
    } 

을하지만,이 속성이 중첩 된 콩, 또는 컬렉션을 포함 할 때 좀 더 복잡해진다. 복잡한 콩의 깊은 병합을 처리 할 수있는 스마트 도구가 있습니까?

나는 병합 작업을 할 방법을 단지에 대한 좀 더 구체적인 :

는, 간단한 속성을 원본에서 대상으로 복사해야 소스 콩의 수집 및 빈 대상 bean을 감안할 때,하지 않는 한 갈등이있다. 충돌이 있으면 필드를 비워 두어야합니다. 특성이 콜렉션 유형 인 경우, 소스 bean의 값은 중복을 제외하고 결합되어야하며 destination 특성에 복사되어야합니다. 이러한 규칙은 bean 자체의 속성에 재귀 적으로 적용해야합니다.

+0

Google에 아무 것도 없다는 사실 외에도,이 도구는 충돌을 처리하는 방법을 결정하기 위해 매우 구성 가능해야합니다. 병합에 대한 귀하의 규칙은 무엇입니까? –

+0

@Dave - 원래의 질문에 내 병합 규칙에 대한 설명을 추가했습니다. – morgancodes

답변

0

apache common beanutils을 사용할 수 있습니다. 당신이하려고하는 것을 수행하는 메소드가 내장되어 있지는 않지만, 그 안에서 도우미 메소드를 사용하여 같은 것을 얻을 수 있습니다

2

Dozer 또는 Smooks. 빈 병합을 원한다면 Dozer가 승자입니다. csv to pojo 등의 다른 유스 케이스를 찾고 있다면 Smooks를 살펴보십시오.