Cómo implementar beanutils.copyproperties sin copiar ciertos campos
Hay BeanUtils en Spring y Apache commons-beanutils respectivamente, que proporcionan operaciones comunes en java beans.
Cuando estaba escribiendo un programa antes, usé dos copias de objetos de diferentes tipos pero con básicamente los mismos atributos. Como resultado, cuando copié los atributos del objeto del tipo java.util.Date, debido a que su valor era nulo, se produjo un error anormal.
Debido a limitaciones de tiempo, cambiamos temporalmente al método get/set. Afortunadamente, el objeto no tiene muchos atributos.
He estado preocupado por este problema desde entonces. Hoy me tomé el tiempo para observar la implementación de BeanUtils.copyProperties en los paquetes spring y apache commons-beanutils.
El método de implementación en Spring es muy simple, que consiste simplemente en obtener/establecer los atributos con el mismo nombre en los dos objetos y solo verificar la accesibilidad de los atributos.
Commons-beanutils impone muchas comprobaciones, incluida la conversión de tipos, e incluso comprueba la accesibilidad de la clase a la que pertenece el objeto.
Además, el reemplazo en commons-beanutils no admite java.util.Date. Además de admitir tipos básicos y matrices de tipos básicos, también admite objetos de java.sql.Date, java.sql.Time, java.sql.TimeStamp, java.io.File y javaio.URL. apoyado. Pero puedes personalizar el convertidor de tu clase. Entonces regístrate.
Creo que el método copyProperties de la clase BeanUtils en el paquete commons-beanutils es demasiado complejo, tiene demasiadas restricciones y es incómodo de usar. Aunque la escalabilidad es buena, la facilidad de uso no lo es. alto.