Java: Cara Menyalin Properti dari Satu Kacang ke Kacang Lainnya
Diterbitkan: 2018-06-26Sebagian besar pengembang Java terbiasa membuat kelas Java yang sesuai dengan pola penamaan JavaBeans untuk pengambil dan penyetel properti. Wajar untuk kemudian mengakses metode ini secara langsung, menggunakan panggilan ke metode getXxx dan setXxx yang sesuai.
Namun, ada beberapa kesempatan di mana akses dinamis ke properti objek Java (tanpa pengetahuan yang dikompilasi tentang metode pengambil dan penyetel properti yang akan dipanggil) diperlukan.
Contoh kasus penggunaan meliputi:
- Membangun bahasa scripting yang berinteraksi dengan model objek Java (seperti Bean Scripting Framework).
- Membangun prosesor bahasa template untuk presentasi web dan penggunaan serupa (seperti JSP atau Velocity).
- Membangun perpustakaan tag khusus untuk lingkungan JSP dan XSP (seperti Apache Taglibs, Struts, Cocoon).
- Menggunakan sumber daya konfigurasi berbasis XML (seperti skrip pembuatan Ant, deskriptor penerapan aplikasi web, file server.xml Tomcat).
The Jakarta Commons BeanUtils
library memiliki berbagai fungsi untuk bekerja dengan JavaBeans. Versi 1.8.3 dari BeanUtils memiliki ketergantungan pada CommonsLogging library
.
Selain itu, dalam tutorial ini, saya telah menggunakan ToStringBuilder
di perpustakaan Commons Lang untuk menampilkan properti JavaBeans dalam contoh ini.
Yang lain harus membaca:
- Cara Menghasilkan Java Thread Dump Secara Terprogram
- Cara Mengganti Metode equals() dan hashcode() di Java
Ini adalah Contoh Java sederhana yang menunjukkan cara menyalin properti dari Satu Kacang ke Kacang Lainnya.
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 ; } } |
Keluaran:
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 ] |
Berikut adalah dependensi pakar:
Ketergantungan Apache Common Beanutils Maven
1 2 3 4 5 |
< dependency > < groupId > commons - beanutils < / groupId > < artifactId > commons - beanutils < / artifactId > < version > 1.9.3 < / version > < / dependency > |
Ketergantungan Maven Logging Apache Commons
1 2 3 4 5 |
< dependency > < groupId > commons - logging < / groupId > < artifactId > commons - logging < / artifactId > < version > 1.2 < / version > < / dependency > |