Copie propriedades de um bean para outro (não da mesma classe) recursivamente (incluindo beans aninhados) [duplicado]

Esta pergunta já tem uma resposta aqui:

alguma ferramenta para mapeamento de objeto java para objeto? [fechadas] 10 respostas

Qual abordagem requer a menor quantidade de código escrito próprio para obter uma cópia profunda de um bean para outro? O objetivo é fazer isso de maneira automática quando as propriedades de origem e destino forem correspondidas por nome.

feijão principal de origem:

public class SourceBean {
    private String beanField;
    private SourceNestedBean nestedBean;

    // getters and setters
}

bean aninhado de origem:

public class SourceNestedBean {
    private String nestedBeanField;

    // getters and setters
}

feijão principal de destino:

public class TargetBean {
    private String beanField;
    private TargetNestedBean nestedBean;

    // getters and setters        
}

feijão aninhado de destino:

public class TargetNestedBean {
    private String nestedBeanField;

    // getters and setters
}


Utilizando p.Spring BeanUtils.copyProperites () Eu poderia criar uma cópia superficial de umSourceBean paraTargetBean com uma linha de código, mas não copiará beans aninhados. Existe algum utilitário maduro (não necessariamente o Spring Framework) que permita fazer a cópia profunda enquantoescrevendo o mínimo de código possível (praticamente o mesmo que BeanUtils.copyProperties ())?

questionAnswers(4)

yourAnswerToTheQuestion