Java: come copiare le proprietà da un bean all'altro
Pubblicato: 2018-06-26
La maggior parte degli sviluppatori Java viene utilizzata per creare classi Java conformi ai modelli di denominazione JavaBeans per getter e setter di proprietà. È naturale quindi accedere direttamente a questi metodi, utilizzando chiamate ai metodi getXxx e setXxx corrispondenti.
Tuttavia, ci sono alcune occasioni in cui è necessario l'accesso dinamico alle proprietà degli oggetti Java (senza la conoscenza compilata dei metodi getter e setter delle proprietà da chiamare).
Esempi di casi d'uso includono:
- Creazione di linguaggi di scripting che interagiscono con il modello a oggetti Java (come il Bean Scripting Framework).
- Creazione di processori di linguaggio modello per presentazioni Web e usi simili (come JSP o Velocity).
- Creazione di librerie di tag personalizzate per ambienti JSP e XSP (come Apache Taglibs, Struts, Cocoon).
- Consumo di risorse di configurazione basate su XML (come script di build Ant, descrittori di distribuzione di applicazioni Web, file server.xml di Tomcat).
BeanUtils Jakarta Commons la libreria offre una varietà di funzionalità per lavorare con JavaBeans. La versione 1.8.3 di BeanUtils ha una dipendenza dalla CommonsLogging library .
Inoltre, in questo tutorial, ho usato ToStringBuilder nella libreria Commons Lang per generare le proprietà dei JavaBeans in questo esempio.
Un altro deve leggere:
- Come generare un dump di thread Java in modo programmatico
- Come eseguire l'override del metodo equals() e hashcode() in Java
Questo è un semplice esempio Java che mostra il modo per copiare le proprietà da One Bean a Another.
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 ; } } |
Produzione:
|
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 ] |
Ecco le dipendenze Maven:
Dipendenza Apache Common Beanutils Maven
|
1 2 3 4 5 |
< dependency > < groupId > commons - beanutils < / groupId > < artifactId > commons - beanutils < / artifactId > < version > 1.9.3 < / version > < / dependency > |
Dipendenza da Maven di registrazione di Apache Commons
|
1 2 3 4 5 |
< dependency > < groupId > commons - logging < / groupId > < artifactId > commons - logging < / artifactId > < version > 1.2 < / version > < / dependency > |
