Java BeanUtils-중첩 된 속성 액세스

기술

"."를 사용하여 액세스 경로의 속성 이름을 연결하여 빈의 중첩 속성 값에 액세스 할 수 있습니다. 구분자.

값을 얻고 설정할 수 있습니다. Nested 아래 방법을 사용하여 속성 :

  • PropertyUtils.getNestedProperty (Object, String)

  • PropertyUtils.setNestedProperty (Object, String, Object)

매개 변수 :

  • Object: 속성을 얻거나 수정할 수있는 빈입니다.

  • String: 가져 오거나 수정할 중첩 속성의 이름입니다.

이 예제에서는 중첩 된 속성의 값을 가져오고 설정하는 방법을 볼 수 있습니다. 세 가지 클래스를 만들 것입니다. SubBean , AppLayer1Bean 콩에 대한 BeanUtilsDemo 실행하는 메인 프로그램으로.

import org.apache.commons.beanutils.PropertyUtils;

public class BeanUtilsDemo {
    public static void main(String args[]){
        try{
            // create the bean
            AppLayer1Bean nested = new AppLayer1Bean();
            // set a SubBean which is part of another bean
            SubBean sb = new SubBean();
            sb.setStringProperty("Hello World from SubBean");
            nested.setSubBean(sb);
		
            // accessing and setting nested properties
            PropertyUtils.setNestedProperty(
                nested, "subBean.stringProperty",
                "Hello World from SubBean, set via Nested Property Access");
			
            System.out.println(
                PropertyUtils.getNestedProperty(nested, "subBean.stringProperty"));
        }
        catch(Exception e){
            System.out.println(e);
        }
    }
}

이제 아래와 같이 SubBean.java 라는 다른 클래스를 생성 합니다.

public class SubBean {
    private int intProperty;
    private String stringProperty;
	
    public void setIntProperty(int intProperty) { 
        this.intProperty = intProperty; 
    }
    public int getIntProperty() {
        return this.intProperty; 
    }
	
    public void setStringProperty(String stringProperty) { 
        this.stringProperty = stringProperty; 
    }
    public String getStringProperty() { 
        return this.stringProperty; 
    }
}

아래 코드와 함께 AppLayer1Bean.java 클래스를 하나 더 만듭니다 .

public class AppLayer1Bean {
    private SubBean subBean;

    public void setSubBean(SubBean subBean) {
        this.subBean = subBean;
    }
    public SubBean getSubBean(){
        return this.subBean;
    }	
}

산출

위의 코드가 어떻게 작동하는지 확인하기 위해 다음 단계를 수행해 보겠습니다.

  • 위의 첫 번째 코드를 BeanUtilsDemo.java 로 저장합니다 .

  • 이제 실행 옵션 또는 Ctrl + f11을 사용하여 코드를 실행하면 아래와 같은 출력이 표시됩니다.

PropertyUtils 메서드 서명

다음 메소드는 PropertyUtils 클래스에 의해 제공되며 , 지정된 Bean의 특성 값을 가져오고 설정하기 위해 단순, 색인화 및 맵핑 된 특성 액세스의 임의 조합을 허용합니다.

  • PropertyUtils.getProperty (Object, String)

  • PropertyUtils.setProperty (Object, String, Object)

매개 변수 :

  • Object: 속성을 얻거나 수정할 수있는 빈입니다.

  • String: 가져 오거나 수정할 인덱싱 및 / 또는 중첩 속성의 이름입니다.

다음 간단한 프로그램은 getProperty 및 setProperty 메소드의 사용을 보여줍니다.

import org.apache.commons.beanutils.PropertyUtils;

public class PropertyUtilsTest {
    public static void main(String args[]){
        try{
            Tv Color = new Tv();
            PropertyUtils.setProperty(Color, "color", "Black");
            String value = (String) PropertyUtils.getProperty(Color, "color");
            System.out.println("The color value of Tv is: " + value);
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
    public static class Tv{
        private String color;
	     
        public String getColor(){
            return color;
        }
        public void setColor(String color){
            this.color = color;
        }
    }
}

위의 예에 지정된대로 코드를 실행하면 아래 출력이 표시됩니다.