С помощью самоанализа легко объединить две простые плоские Java-бины:
BeanInfo info = Introspector.getBeanInfo( ContactBean.class );
PropertyDescriptor pDescArr[] = info.getPropertyDescriptors();
for(PropertyDescriptor pDesc : pDescArr){
//copy properties and check for conflicts here
}
Однако, когда свойства содержат вложенные бины или коллекции, все становится немного сложнее.Есть ли где-нибудь умный инструмент, который будет обрабатывать глубокое слияние сложных bean-компонентов?
Еще несколько подробностей о том, как бы я хотел, чтобы слияние работало:и пустой целевой бин, простые свойства должны быть скопированы из источника в цель, если нет конфликта.Если есть конфликт, поле следует оставить пустым.Если свойство имеет тип коллекции, значения исходных компонентов должны быть объединены, исключая дубликаты, и скопированы в свойство назначения.Эти правила должны применяться рекурсивно к свойствам, которые сами являются бинами.