Java: Cum să copiați proprietățile dintr-un bean în altul
Publicat: 2018-06-26Majoritatea dezvoltatorilor Java sunt obișnuiți să creeze clase Java care se conformează tiparelor de denumire JavaBeans pentru getters și setters de proprietăți. Este firesc să accesați aceste metode direct, folosind apeluri la metodele getXxx și setXxx corespunzătoare.
Cu toate acestea, există unele ocazii în care este necesar accesul dinamic la proprietățile obiectelor Java (fără cunoștințe compilate despre metodele de obținere și setare de proprietăți care urmează să fie apelate).
Exemple de cazuri de utilizare includ:
- Construirea de limbaje de scripting care interacționează cu modelul obiect Java (cum ar fi Bean Scripting Framework).
- Construirea de procesoare de limbaj șablon pentru prezentări web și utilizări similare (cum ar fi JSP sau Velocity).
- Crearea de biblioteci de etichete personalizate pentru mediile JSP și XSP (cum ar fi Apache Taglibs, Struts, Cocoon).
- Consumul de resurse de configurare bazate pe XML (cum ar fi scripturi de compilare Ant, descriptori de implementare a aplicațiilor web, fișierul server.xml al Tomcat).
Jakarta Commons BeanUtils
biblioteca oferă o varietate de funcționalități pentru lucrul cu JavaBeans. Versiunea 1.8.3 a BeanUtils are o dependență de CommonsLogging library
.
În plus, în acest tutorial, am folosit ToStringBuilder
în biblioteca Commons Lang pentru a scoate proprietățile JavaBeans din acest exemplu.
Altul trebuie să citească:
- Cum se generează Java Thread Dump în mod programatic
- Cum să suprascrieți metoda equals() și hashcode() în Java
Acesta este un exemplu Java simplu care demonstrează modul de a copia proprietăți de la un bean la altul.
CrunchifyBeanCopyExample.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package crunchify . com . tutorial ; import java . lang . reflect . InvocationTargetException ; import org . apache . commons . beanutils . BeanUtils ; import org . apache . commons . lang . builder . ToStringBuilder ; /** * @author Crunchify.com * */ public class CrunchifyBeanCopyExample { public static void main ( String [ ] args ) { CrunchifyBeanCopyFrom bean1 = new CrunchifyBeanCopyFrom ( "Crunchify" , "Online Java and WordPress Tutorials" ) ; CrunchifyBeanCopyTo bean2 = new CrunchifyBeanCopyTo ( "Paypal" , "Financial Place" ) ; System . out . println ( ToStringBuilder . reflectionToString ( bean1 ) ) ; System . out . println ( ToStringBuilder . reflectionToString ( bean2 ) ) ; try { System . out . println ( "\nCopying properties from fromBean to toBean...\n" ) ; BeanUtils . copyProperties ( bean2 , bean1 ) ; } catch ( IllegalAccessException e ) { e . printStackTrace ( ) ; } catch ( InvocationTargetException e ) { e . printStackTrace ( ) ; } System . out . println ( ToStringBuilder . reflectionToString ( bean1 ) ) ; System . out . println ( ToStringBuilder . reflectionToString ( bean2 ) ) ; } } |
CrunchifyBeanCopyFrom.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com . crunchify . tutorials ; import java . io . Serializable ; /** * @author Crunchify.com * */ @SuppressWarnings ( "serial" ) public class CrunchifyBeanCopyFrom implements Serializable { private String name ; private String myProp ; public CrunchifyBeanCopyFrom ( ) { } public CrunchifyBeanCopyFrom ( String name , String myProp ) { this . name = name ; this . myProp = myProp ; } public String getMyProp ( ) { return myProp ; } public void setMyProp ( String prop ) { myProp = prop ; } public String getName ( ) { return name ; } public void setName ( String name ) { this . name = name ; } } |
CrunchifyBeanCopyTo.java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com . crunchify . tutorials ; import java . io . Serializable ; /** * @author Crunchify.com * */ @SuppressWarnings ( "serial" ) public class CrunchifyBeanCopyTo implements Serializable { private String name ; private String myProp ; public CrunchifyBeanCopyTo ( ) { } public CrunchifyBeanCopyTo ( String name , String myProp ) { this . name = name ; this . myProp = myProp ; } public String getMyProp ( ) { return myProp ; } public void setMyProp ( String prop ) { myProp = prop ; } public String getName ( ) { return name ; } public void setName ( String name ) { this . name = name ; } } |
Ieșire:
1 2 3 4 5 6 7 |
crunchify . com . tutorial . CrunchifyBeanCopyFrom @ 58fe210a [ name = Crunchify , myProp = Online Java and WordPress Tutorials ] crunchify . com . tutorial . CrunchifyBeanCopyTo @ 66780515 [ name = Paypal , myProp = Financial Place ] Copying properties from fromBean to toBean . . . crunchify . com . tutorial . CrunchifyBeanCopyFrom @ 58fe210a [ name = Crunchify , myProp = Online Java and WordPress Tutorials ] crunchify . com . tutorial . CrunchifyBeanCopyTo @ 66780515 [ name = Crunchify , myProp = Online Java and WordPress Tutorials ] |
Iată dependențele maven:
Dependența Apache Common Beanutils Maven
1 2 3 4 5 |
< dependency > < groupId > commons - beanutils < / groupId > < artifactId > commons - beanutils < / artifactId > < version > 1.9.3 < / version > < / dependency > |
Dependența Apache Commons Logging Maven
1 2 3 4 5 |
< dependency > < groupId > commons - logging < / groupId > < artifactId > commons - logging < / artifactId > < version > 1.2 < / version > < / dependency > |