Copie las propiedades de un bean a otro (no la misma clase) de forma recursiva (incluidos los beans anidados) [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Alguna herramienta para el mapeo de objeto a objeto de Java? [cerrado] 10 respuestas

¿Qué enfoque requiere la menor cantidad de código escrito propio para lograr una copia profunda de un bean a otro? El objetivo es hacerlo de forma automática cuando las propiedades de origen y destino coinciden por nombre.

fuente de frijol principal:

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

    // getters and setters
}

frijol anidado de origen:

public class SourceNestedBean {
    private String nestedBeanField;

    // getters and setters
}

frijol principal objetivo:

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

    // getters and setters        
}

frijol anidado objetivo:

public class TargetNestedBean {
    private String nestedBeanField;

    // getters and setters
}


Usando p.Spring BeanUtils.copyProperites () Podría crear una copia superficial de unSourceBean aTargetBean con una línea de código pero no copiará beans anidados. ¿Hay alguna utilidad madura (no necesariamente Spring Framework) que permita hacer una copia profunda mientrasescribir el mínimo código propio posible (más o menos lo mismo que BeanUtils.copyProperties ())?

Respuestas a la pregunta(4)

Su respuesta a la pregunta