Java: 한 빈에서 다른 빈으로 속성을 복사하는 방법
게시 됨: 2018-06-26대부분의 Java 개발자는 속성 getter 및 setter에 대한 JavaBeans 이름 지정 패턴을 준수하는 Java 클래스를 만드는 데 익숙합니다. 그런 다음 해당 getXxx 및 setXxx 메서드에 대한 호출을 사용하여 이러한 메서드에 직접 액세스하는 것이 자연스럽습니다.
그러나 Java 객체 속성에 대한 동적 액세스(호출할 속성 getter 및 setter 메서드에 대한 컴파일된 지식 없이)가 필요한 경우가 있습니다.
사용 사례의 예는 다음과 같습니다.
- Java 개체 모델(예: Bean Scripting Framework)과 상호 작용하는 스크립팅 언어를 빌드합니다.
- 웹 프레젠테이션 및 이와 유사한 용도(예: JSP 또는 Velocity)를 위한 템플릿 언어 프로세서 구축.
- JSP 및 XSP 환경(예: Apache Taglibs, Struts, Cocoon)을 위한 사용자 정의 태그 라이브러리 구축.
- XML 기반 구성 리소스 사용(예: Ant 빌드 스크립트, 웹 애플리케이션 배포 설명자, Tomcat의 server.xml 파일).
자카르타 커먼즈 BeanUtils
라이브러리는 JavaBeans 작업을 위한 다양한 기능을 제공합니다. BeanUtils의 1.8.3 버전은 CommonsLogging library
에 종속됩니다.
또한 이 튜토리얼에서는 Commons Lang 라이브러리의 ToStringBuilder
를 사용하여 이 예제에서 JavaBeans의 속성을 출력했습니다.
다른 사람은 다음을 읽어야 합니다.
- 프로그래밍 방식으로 Java 스레드 덤프를 생성하는 방법
- Java에서 equals() 및 hashcode() 메서드를 재정의하는 방법
이것은 한 Bean에서 다른 Bean으로 속성을 복사하는 방법을 보여주는 간단한 Java 예제입니다.
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 ; } } |
산출:
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 ] |
다음은 maven 종속성입니다.
Apache Common Beanutils Maven 종속성
1 2 3 4 5 |
< dependency > < groupId > commons - beanutils < / groupId > < artifactId > commons - beanutils < / artifactId > < version > 1.9.3 < / version > < / dependency > |
Apache Commons Logging Maven 종속성
1 2 3 4 5 |
< dependency > < groupId > commons - logging < / groupId > < artifactId > commons - logging < / artifactId > < version > 1.2 < / version > < / dependency > |