Инструменты для объединения Java-бобов - PullRequest
4 голосов
/ 13 января 2011

С помощью самоанализа легко объединить две простые плоские Java-бины:

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

Однако, когда свойства содержат вложенные бины или коллекции, все становится немного сложнее.Есть ли где-нибудь умный инструмент, который будет обрабатывать глубокое слияние сложных bean-компонентов?

Еще несколько подробностей о том, как бы я хотел, чтобы слияние работало:и пустой целевой бин, простые свойства должны быть скопированы из источника в цель, если нет конфликта.Если есть конфликт, поле следует оставить пустым.Если свойство имеет тип коллекции, значения исходных компонентов должны быть объединены, исключая дубликаты, и скопированы в свойство назначения.Эти правила должны применяться рекурсивно к свойствам, которые сами являются бинами.

Ответы [ 2 ]

3 голосов
/ 14 января 2011

Бульдозер или Смукс .Dozer - победитель, если вы просто хотите объединить бобы.Если вы ищете другие варианты использования, такие как CSV для Pojo и т. Д., То посмотрите Smooks.

1 голос
/ 13 января 2011

Вы можете использовать apache common beanutils .Не существует встроенного метода для выполнения того, что вы пытаетесь сделать, но вы можете использовать там вспомогательные методы для достижения того же

...